stream是jdk1.8后的新特性,具体概念自己去百度吧,主要针对单列集合使用的,像list和set这种的,map不能直接使用,需要转换成单列集合。
不废话,直接上例子:
将list集合中的名字按要求筛选出来。
普通方法:
public static void main(String[] args) {
/**
* 要求:筛选出list集合中姓张,且名字为三个字的元素
* */
List<String> list = new ArrayList<>();
list.add("张三丰");
list.add("周芷若");
list.add("张无忌");
list.add("张三");
list.add("金毛狮王");
list.add("成昆");
// 先找出姓张的
List<String> list1 = new ArrayList<>();
for(String name:list){
if (name.startsWith("张")){
list1.add(name);
}
}
System.out.println(list1);
// 从姓张的里边筛选出名字长度为三个字的
List<String> list2 = new ArrayList<>();
for(String name:list1){
if (name.length()==3){
list2.add(name);
}
}
System.out.println(list2);
}
输出结果:
[张三丰, 张无忌, 张三]
[张三丰, 张无忌]
使用stream中的filter方法:
public static void main(String[] args) {
/**
* 要求:筛选出list集合中姓张,且名字为三个字的元素
* */
List<String> list = new ArrayList<>();
list.add("张三丰");
list.add("周芷若");
list.add("张无忌");
list.add("张三");
list.add("金毛狮王");
list.add("成昆");
list.stream().filter(name ->name.startsWith("张")) // 过滤出姓“张”的
.filter(name ->name.length()==3) // 过滤出名字是三个字的
.forEach(name -> System.out.println(name)); // foreach遍历输出。
结果:
D:\JAVA\JDK-11\bin\java.exe "-javaagent:D:\idea\IntelliJ IDEA
张三丰
张无忌
Process finished with exit code 0
本文介绍如何使用Java 8的Stream API简化集合操作。通过具体的代码示例,展示如何利用filter方法快速筛选出满足条件的数据,相比传统循环更加简洁高效。
4302

被折叠的 条评论
为什么被折叠?



