JavaSE-Stream流的初体验

目录

案例需求

代码实现-不使用Stream流

代码实现-使用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<>();
        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流后,需求的实现只需一行代码即可搞定,大大简化了代码编写的复杂度。

猜你喜欢

转载自blog.csdn.net/m0_74462339/article/details/143301339