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版权声明:本文为m0_46351037原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。