zoukankan      html  css  js  c++  java
  • 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);
        }
    
  • 相关阅读:
    MVC Controller 下载文件
    C#中字符串转日期类型
    MVC中使用Hangfire按秒执行任务
    Excel vba中访问ASP.NET MVC项目,记录访问时间,文件名称
    MSSQL SERVER收缩日志文件
    匿名线程启动
    常用颜色表以及中国传统颜色名录
    elasticsearch.net search入门使用指南中文版
    InstallShield程序打包图解
    [转]让程序只能打开一个
  • 原文地址:https://www.cnblogs.com/xiaodou00/p/14707647.html
Copyright © 2011-2022 走看看