• lambda表达式——流的各种常见操作总结(排序,过滤,去重,分页等)


    流的各种操作总结

    过滤集合(filter)

        /**
         * filter使用:过滤掉不符合断言判断的数据
         */
        public void filterTest() {
            list.stream()
    
                    // filter
                    .filter(sku ->
                            SkuCategoryEnum.BOOKS
                                    .equals(sku.getSkuCategory()))
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
        }
    
    

    将一个元素转换成另一个元素(map)

        /**
         * map使用:将一个元素转换成另一个元素
         */
        @Test
        public void mapTest() {
            list.stream()
    
                    // map
                    .map(sku -> sku.getSkuName())
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
        }
    

    对流中元素进行排序(sort)

    /**
         * sort使用:对流中元素进行排序,可选则自然排序或指定排序规则。有状态操作
         */
        @Test
        public void sortTest() {
            list.stream()
    
                    .peek(sku -> System.out.println(sku.getSkuName()))
    
                    //sort
                    .sorted(Comparator.comparing(Sku::getTotalPrice))
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
        }
    

    对流元素进行去重(distinct)

     public void distinctTest() {
            list.stream()
                    .map(sku -> sku.getSkuCategory())
    
                    // distinct
                    .distinct()
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
    
    
        }
    

    跳过前N条记录(skip),可以作为假分页

     /**
         * skip使用:跳过前N条记录。有状态操作
         */
        @Test
        public void skipTest() {
            list.stream()
    
                    .sorted(Comparator.comparing(Sku::getTotalPrice))
    
                    // skip
                    .skip(3)
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
        }
    

    截断前N条记录(limit),可以作为假分页

     /**
         * limit使用:截断前N条记录。有状态操作
         */
        @Test
        public void limitTest() {
            list.stream()
                    .sorted(Comparator.comparing(Sku::getTotalPrice))
    
                    .skip(2 * 3)
    
                    // limit
                    .limit(3)
    
                    .forEach(item ->
                            System.out.println(
                                    JSON.toJSONString(
                                            item, true)));
        }
    

    找到最大的元素

        /**
         * max使用:
         */
        @Test
        public void maxTest() {
            OptionalDouble optionalDouble = list.stream()
                    // 获取总价
                    .mapToDouble(Sku::getTotalPrice)
    
                    .max();
    
            System.out.println(optionalDouble.getAsDouble());
        }
    

    找到最小的元素

        /**
         * min使用
         */
        @Test
        public void minTest() {
            OptionalDouble optionalDouble = list.stream()
                    // 获取总价
                    .mapToDouble(Sku::getTotalPrice)
    
                    .min();
    
            System.out.println(optionalDouble.getAsDouble());
        }
    

    元素匹配三剑客(allMatch,anyMatch,noneMatch)

     /**
         * allMatch使用:终端操作,短路操作。所有元素匹配,返回true
         */
        @Test
        public void allMatchTest() {
            boolean match = list.stream()
    
                    .peek(sku -> System.out.println(sku.getSkuName()))
    
                    // allMatch
                    .allMatch(sku -> sku.getTotalPrice() > 100);
    
            System.out.println(match);
        }
    
        /**
         * anyMatch使用:任何元素匹配,返回true
         */
        @Test
        public void anyMatchTest() {
            boolean match = list.stream()
    
                    .peek(sku -> System.out.println(sku.getSkuName()))
    
                    // anyMatch
                    .anyMatch(sku -> sku.getTotalPrice() > 100);
    
            System.out.println(match);
        }
    
        /**
         * noneMatch使用:任何元素都不匹配,返回true
         */
        @Test
        public void noneMatchTest() {
            boolean match = list.stream()
    
                    .peek(sku -> System.out.println(sku.getSkuName()))
    
                    // noneMatch
                    .noneMatch(sku -> sku.getTotalPrice() > 10_000);
    
            System.out.println(match);
        }
    
  • 相关阅读:
    全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!
    基于 Spring Cloud 的微服务架构实践指南(上)
    如何在一分钟内搞定面试官?
    成功面试宝典Java
    Spring Boot 自动装配流程
    C语言浮点数
    C语言字符串
    C语言数据类型转换
    C语言结构体
    C语言格式化输出
  • 原文地址:https://www.cnblogs.com/xiaodou00/p/14707647.html
Copyright © 2020-2023  润新知