有一个列表,从中筛选出值大于30的元素。看看用传统的做法和Java流的做法有什么不同。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(20);
list.add(40);
list.add(100);        
// 按照以前的方法   
List<Integer> list1 = new LinkedList<>();     
for (Integer value : list) {       
    if (value > 30) {          
        list1.add(value);     
    }     
}     
System.out.println(list1);     
// 使用java流
// 详细讲解一下,后面我就偷懒了
// list.stream()就是先将集合处理一下,返回我们需要的流
// filter的方法就是这里帮我们筛选值大于30的方法
// 这里用的是lambda表达式,所以要先了解一下lambda表达式,
// filter(Predicate<? super T> predicate)方法的参数是Predicate类型,Predicate是一个函数式接口
// 当把数据筛选出来后,此时还需要把它变成List的集合,毕竟现在还只是流,不是我们要的
// 这时候就需要collect方法了,这就是我说的流收集器,其实不止可以转换成List,还有Collectors.toSet()和Collectors.toMap()
List<Integer> list2 = list.stream().filter(value -> {
    return value > 30;      
}).collect(Collectors.toList());   
System.out.println(list2);