有一个列表,从中筛选出值大于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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类