当我们想删除数组中有特定规律的元素时,使用数组遍历的效率太低了,这时我们可以使用Stream流来解决这一问题
例如我们要删除数组中的偶数,然后再给每个元素乘2
普通做法
// 创键一个int类型的数组
int[] arr ={3,5,2,0,4,10};
// 创键一个List集合
List<Integer> list = new ArrayList<>();
// 将数组中的偶数删除
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2!=0){
list.add(arr[i]);
}
}
// 对数组中的每个元素乘2
for (int i = 0; i < list.size(); i++) {
list.set(i,list.get(i)*2);
}
// 以数组的形式进行输出
int[] data = new int[list.size()];
for (int i = 0; i < data.length; i++) {
data[i] = list.get(i);
}
System.out.println(Arrays.toString(data));
使用Stream流
三种方式
1.使用stream流的of方法Stream.of(arr);
2.使用数组的Arrays.stream
Arrays.stream(arr);
3.如果是集合类,继承了Collection的.stream
List<String> list = new ArrayList<>(); list.stream();
在使用流时,流会一去不复返.使用前需充分考虑.
1.首先创建一个数组
int[] arr ={3,5,2,0,4,10};
2.使用Arrays.stream
Arrays.stream(arr).filter(item->{
return item%2!=0;
}).map(item->{
return item*2;
}).toArray();
3.可以使用Stream流中的forEach方法遍历数组中的元素
Arrays.stream(arr).filter(item->{
return item%2!=0;
}).map(item->{
return item*2;
}).forEach(item->{
System.out.println(item);
});
使用Lambda表达式使代码更简洁
Arrays.stream(arr).filter(item->item%2!=0).map(item->item*2).forEach(System.out::println);
后面我会专门更新一篇关于Stream流的内容和一篇Lambda表达式的内容,大家可以持续关注