目录
案例需求
代码实现-不使用Stream流
public class StreamDemo1 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("张无忌");
list1.add("周芷若");
list1.add("赵敏");
list1.add("张强");
list1.add("张三丰");
//1.把所有以“张”开头的元素存储到新集合中
ArrayList<String> list2 = new ArrayList<>();
for (String name : list1) {
if(name.charAt(0) =='张'){
list2.add(name);
}
}
System.out.println("所有以“张”开头的元素有:"+list2);
//2.把所有以“张”开头并且长度为3的元素存储到新集合中
ArrayList<String> list3 = new ArrayList<>();
for (String name : list1) {
if(name.charAt(0) =='张' && name.length() == 3){
list3.add(name);
}
}
System.out.println("所有以“张”开头并且长度为3的元素有:"+list3);
}
}
打印结果:
可以看到,在不使用Stream流的情况,我们能够实现案例需求,但是代码书写起来其实也挺麻烦的。
代码实现-使用Stream流
public class StreamDemo1 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("张无忌");
list1.add("周芷若");
list1.add("赵敏");
list1.add("张强");
list1.add("张三丰");
//1.把所有以“张”开头的元素存储到新集合中
ArrayList<String> list2 = new ArrayList<>();
list1.stream().filter(name->name.charAt(0)=='张').forEach(name->list2.add(name));
System.out.println("所有以“张”开头的元素有:"+list2);
//2.把所有以“张”开头并且长度为3的元素存储到新集合中
ArrayList<String> list3 = new ArrayList<>();
list1.stream().filter(name->name.charAt(0)=='张').filter(name->name.length()==3).forEach(name->list3.add(name));
System.out.println("所有以“张”开头并且长度为3的元素有:"+list3);
}
}
打印结果:
可以看到,使用Stream流后,需求的实现只需一行代码即可搞定,大大简化了代码编写的复杂度。