stream表达式从一个集合中条件过滤参数

文章展示了如何在Java中使用StreamAPI的filter方法从List集合中过滤出特定条件的元素。给定一个Student对象列表list1和一个目标名称列表list3,通过filter方法筛选出名字在list3中的Student对象,形成交集。同时,文章还提及了Stream流的一次性消费原则,即流在处理完后会被关闭,不能再次遍历。
摘要由CSDN通过智能技术生成

List集合过滤学习记录


从一个集合list1中过找到name为list3的参数集合


        List<Student> list1 = new ArrayList<>();
        list1.add(new Student("name100", "100"));
        list1.add(new Student("name102", "102"));
        list1.add(new Student("name103", "103"));
        list1.add(new Student("name104", "100"));

        List<String> list3 = new ArrayList<>();
        list3.add("100");
        list3.add("102");


        List<Student> collect = list1.stream().filter(x -> list3.contains(x.getName())).collect(Collectors.toList());
        System.out.println("交集:" + collect);




@Data
class Student {
    private String id;
    private String name;
}

交集:[Student(id=name100, name=100), Student(id=name102, name=102), Student(id=name104, name=100)]


Stream流中的filter 方法基本使用的代码如:


  //创建一个Stream流
        Stream<String> stream = Stream.of("张先生", "张三", "张四", "小明", "老王");
        //对Stream流中的元素进行过滤,只要姓张的人
        Stream<String> stream2 = stream.filter((String name)->{return name.startsWith("张");});
        //遍历stream2流
        stream2.forEach(name-> System.out.println(name));

        /*
            Stream流属于管道流,只能被消费(使用)一次
            第一个Stream流调用完毕方法,数据就会流转到下一个Stream上
            而这时第一个Stream流已经使用完毕,就会关闭了
            所以第一个Stream流就不能再调用方法了
            IllegalStateException: stream has already been operated upon or closed
         */
        //遍历stream流
        stream.forEach(name-> System.out.println(name));




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值