使用Stream流遍历集合和数组

 当我们想删除数组中有特定规律的元素时,使用数组遍历的效率太低了,这时我们可以使用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表达式的内容,大家可以持续关注