JAVA8 Stream查找、匹配、归约

List<Student> students = Arrays.asList(
            new Student(1,"zhangsan","class1",18,60),
            new Student(2,"lisi","class1",20,59),
            new Student(3,"wangwu","class2",18,100),
            new Student(4,"wangwu","class2",16,100),
            new Student(5,"wangwu","class2",22,100),
            new Student(6,"zhaoliu","class2",18,80));
/**
 * 查找、匹配
 *  allMatch(Predicate p) 检查是否匹配所有元素
 * anyMatch(Predicate p) 检查是否至少匹配一个元素
 * noneMatch(Predicate p) 检查是否没有匹配所有元素
 * findFirst() 返回第一个元素
 * findAny() 返回当前流中的任意元素
 * count() 返回流中元素总数
 * max(Comparator c) 返回流中最大值
 * min(Comparator c) 返回流中最小值
*/
@Test
    public void test5(){
        System.out.println("allMatch:"+students.stream().allMatch(e->e.getClazz().contains("class1")));
        System.out.println("anyMatch:"+students.stream().anyMatch(e->e.getGrade()==100));
        System.out.println("noneMatch:"+students.stream().noneMatch(e->e.getGrade()==100));
        System.out.println("findFirst:"+students.stream().findFirst());
        System.out.println("findAny:"+students.stream().findAny());
        System.out.println("count:"+students.stream().filter(e->e.getGrade()==100).count());
        System.out.println("max:"+students.stream().map(e->e.getAge()).max(Double::compare).get());
        System.out.println("min:"+students.stream().map(Student::getAge).min(Double::compare));
    }

输出结果为:

/**
 * 归约
 * reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 T
 * reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional<T>
 */
    @Test
    public void test6(){
        Integer sum = students.stream().map(e->e.getGrade()).reduce(0,(e1, e2)->e1+e2);
        Optional<Integer> suma = students.stream().map(Student::getGrade).reduce(Integer::sum);
        System.out.println(sum+"-----"+suma);//499-----Optional[499]
        Integer[] nums = new Integer[]{1,3,5,7,9};
        Arrays.asList(nums).stream()
                .map(e->e*e).forEach(System.out::println);// 1 9 25 49 81
        Optional<Integer> result = Arrays.asList(nums).stream()
                .reduce(Integer::sum); 
        System.out.println(result.get());//25
    }

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值