JAVA8 stream流的使用方法

注意事项

1.流遍历过程中不能对变量进行操作

2.流中跳出本次循环可用return 等同于 for循环中的continue

 一、对map操作



        //过滤
        int sum = hashMap.entrySet().stream().filter(entry -> entry.getKey().equals(1) || entry.getKey().equals(3) || entry.getKey().equals(5) || entry.getKey().equals(7))
                .mapToInt(entry -> entry.getValue()).sum();
        System.out.println(sum);
        //hashMap与hashMap2 合并,之后key相同的value相加
        hashMap.forEach((key, value) -> hashMap2.merge(key, value, Integer::sum));

二、对list操作


        //对list进行分页
        int pageNum=1;
        int pageSize=5;
        List<Integer> collect = arrayList.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());


        //取arrayList与arrayList2的交集
        List<Integer> result = arrayList.stream()
                .filter(arrayList2::contains)
                .collect(Collectors.toList());
        System.out.println("交集结果是: " + result);


        ArrayList<Person> persons = new ArrayList<>();
        persons.add(new Person("张三", 23));
        persons.add(new Person("李四", 24));
        persons.add(new Person("王五", 25));
        persons.add(new Person("赵六", 23));
        //对list进行分组
        Map<Integer, List<Person>> collect1 = persons.stream().collect(Collectors.groupingBy(person -> person.getAge()));
        collect1.forEach((key, value) -> System.out.println(key + " " + value));
        /*
         * 运行结果:
        23 [Person{name='张三', age=23}, Person{name='赵六', age=23}]
        24 [Person{name='李四', age=24}]
        25 [Person{name='王五', age=25}]
        */
        
        
        
        ArrayList<Person> person2 = new ArrayList<>();
        person2.add(new Person("张三", 23));
        person2.add(new Person("李四", 24));
        person2.add(new Person("王五", 25));
        person2.add(new Person("赵六", 23));
        //根据对象的属性进行排序
        persons.stream().sorted(Comparator.comparing(Person::getAge)).forEach(person -> System.out.println(person));
        /**
         * 运行结果:
         * Person{name='张三', age=23}
         * Person{name='赵六', age=23}
         * Person{name='李四', age=24}
         * Person{name='王五', age=25}
         */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值