`
y806839048
  • 浏览: 1126146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

stream聚合流

阅读更多

 

 

stream聚合流通过map返回实体的某个属性,由于本源是list所以返回的是这个属性的list:

 ------------------------------foreach 返回的只能时同种类型

---------------------map 返回的可以时其他类型

 

 List<String> sqlTpaa= itan.stream().map(i -> {

                    String istr= i.getValue().toString();

                    JSONObject jmodel= JSONObject.parseObject(istr);

                    return jmodel.get("sqlType").toString();

                }).collect(Collectors.toList());

                System.out.println("=========sqlTpaa"+sqlTpaa);

 

 

 

 String mdl=view.getModel();

        JSONObject jsonmodel= JSONObject.parseObject(mdl);

        Set<Map.Entry<String,Object>> ita= jsonmodel.entrySet();

        List<ProDic> paginate = dicService.selectByEventCode(eventcode);

        List<ProDicDto> proDicDtos = new ArrayList<>();

        Set<Map.Entry<String,Object>> itans=new HashSet<>() ;

 

        for (ProDic pg : paginate){

            ProDicDto proDicDto = new ProDicDto();

            BeanUtils.copyProperties(pg, proDicDto);

            Set<Map.Entry<String,Object>>  itan=  ita.stream().filter(r -> {

                        String rv= r.getKey().toString();

                        return rv.equals("event_property_code") ; }

            ).collect(Collectors.toSet());

            if (itan!=null && itan.size()>0){

                Set<Map.Entry<String,Object>> sqlTp= itan.stream().map(i -> {

                    String istr= i.getValue().toString();

                    JSONObject jmodel= JSONObject.parseObject(istr);

 

                    proDicDto.setSqlType( jmodel.get("sqlType").toString());

                    return i;

                }).collect(Collectors.toSet());

 

                List<String> sqlTpaa= itan.stream().map(i -> {

                    String istr= i.getValue().toString();

                    JSONObject jmodel= JSONObject.parseObject(istr);

                    return jmodel.get("sqlType").toString();

                }).collect(Collectors.toList());

                System.out.println("=========sqlTpaa"+sqlTpaa);

            }else{

                proDicDto.setSqlType( "String");

            }

 

            proDicDtos.add(proDicDto);

        }

 

 

stream聚合流中可以直接调用外部函数:

 

 

 public List<String> getAggregators(String jdbcUrl, String dbVersion) {

        if (!CollectionUtils.isEmpty(aggregators)) {

            return this.aggregators.stream().map(a -> formatColumn(a.getColumn(), a.getFunc(), jdbcUrl, dbVersion, false)).collect(Collectors.toList());

        }

        return null;

    }

 

 

    private String formatColumn(String column, String func, String jdbcUrl, String dbVersion, boolean isLable) {

        if (isLable) {

            return String.join(EMPTY, func.trim(), PARENTHESES_START, column.trim(), PARENTHESES_END);

        } else {

            StringBuilder sb = new StringBuilder();

            if ("COUNTDISTINCT".equals(func.trim().toUpperCase())) {

                sb.append("COUNT").append(PARENTHESES_START).append("DISTINCT").append(SPACE);

                sb.append(ViewExecuteParam.getField(column, jdbcUrl, dbVersion));

                sb.append(PARENTHESES_END);

                sb.append(" AS ").append(SqlUtils.getAliasPrefix(jdbcUrl, dbVersion)).append("COUNTDISTINCT").append(PARENTHESES_START);

                sb.append(column);

                sb.append(PARENTHESES_END).append(SqlUtils.getAliasSuffix(jdbcUrl, dbVersion));

            } else {

                sb.append(func.trim()).append(PARENTHESES_START);

                sb.append(ViewExecuteParam.getField(column, jdbcUrl, dbVersion));

                sb.append(PARENTHESES_END);

                sb.append(" AS ").append(SqlUtils.getAliasPrefix(jdbcUrl, dbVersion));

                sb.append(func.trim()).append(PARENTHESES_START);

                sb.append(column);

                sb.append(PARENTHESES_END).append(SqlUtils.getAliasSuffix(jdbcUrl, dbVersion));

            }

            return sb.toString();

        }

    }

 

    @Cacheable(value = "role1",key = "#val")

    public List<UserVO> listUser(String val) {

//        List<UserVO> us= CacheUserDb.userVOList.stream().filter(u ->u.getVal().equals( "role - val - " +val)).collect(Collectors.toList());

        List<UserEntity> uss=userDao.listUserbyVal(val);

        List<UserVO> us = new ArrayList<>();

        uss.stream().forEach(r -> {------------------------------foreach 返回的只能时同种类型

            UserVO en = new UserVO();

            BeanUtils.copyProperties(r, en);

            us.add(en);

        });

        uss.stream().map(r -> {---------------------map 返回的可以时其他类型

            UserVO en = new UserVO();

            BeanUtils.copyProperties(r, en);

           return en;

        }).collect(Collectors.toList());

        return us;

    }

 

 

 

分享到:
评论

相关推荐

    2023年7月13日,Stream流,Stream流的获取,Stream流中间聚合操作,Stream流终结操作,Calendar

    2023年7月13日,Stream流,Stream流的获取,Stream流中间聚合操作,Stream流终结操作,Calendar

    java实现分组聚合

    在Java编程中,分组聚合是一项重要的数据处理技术,它允许我们按照特定的规则将数据组织成多个逻辑组,然后对这些组进行...在Java的集合框架和流API中,分组聚合是一个强大而灵活的工具,值得开发者深入研究和应用。

    stream流操作demo

    Stream API允许我们以声明性方式处理数据,非常适合进行聚合操作,如过滤、映射和减少。下面将详细讨论`stream`操作的相关知识点,并结合`StreamTest.java`和`Person.java`两个文件的可能实现来阐述。 1. **什么是...

    Java8特性Stream流的使用(学完就会,项目源码,附带个人总结)

    以下将详细介绍Stream流的使用,以及它在Java8中的重要性。 首先,Stream API是一种用于处理集合的新接口,它可以对集合进行各种操作,如过滤、映射、聚合等,而无需显式地遍历集合。这种处理方式称为“函数式编程...

    Java基础知识-day13【Stream流】.pdf

    * 数据处理:可以使用 Stream 流来处理大量数据,例如对数据进行过滤、映射、聚合等操作。 * 并发处理:可以使用 Stream 流来进行并发处理,例如使用多个线程来处理大量数据。 常用函数式接口 除了 Predicate 接口...

    java Stream 流使用

    Java Stream 流是Java 8引入的一个重要特性,与Lambda表达式一起,为处理集合提供了新的方式。Stream 不是存储数据的容器,而是提供了一种对数据进行操作的抽象概念,它可以来源于数组、集合或其他数据源。Stream ...

    Java Stream流知识总结

    1. 数据处理:Stream流可以用于处理大规模数据,例如数据过滤、数据转换、数据聚合等。 2. 数据分析:Stream流可以用于数据分析,例如数据统计、数据挖掘等。 3. 并发编程:Stream流可以用于并发编程,例如使用...

    详解JAVA Stream流

    Stream流不是一种数据结构,它也不是集合元素,而是一种算法和计算的方式,专门用于对集合对象进行各种便利、高效的聚合操作,或者大批量数据操作。 创建Stream流可以通过Collection.stream()函数创建一个Stream...

    Stream、Lambda表达式练习.doc

    在Java中,Stream API是Java 8中引入的一种新的数据处理方式,它可以对集合进行各种操作,如过滤、映射、聚合等。Lambda表达式是Java 8中引入的一种新的函数式编程方式,它可以将函数作为参数传递给其他函数。 ...

    Java8 Stream学习

    - **使用Stream.generate()**:可以生成无限流或有限流。 ```java Stream&lt;String&gt; generatedStream = Stream.generate(() -&gt; "element").limit(10); ``` - **使用Stream.iterate()**:可以创建基于初始值和迭代...

    Java8Test.java_java8_almosttog_stream流_

    - 使用`parallelStream()`创建并行流,但需注意并行流并不总是比顺序流快,因为并行化有额外的开销。 6. **`Java8Test.java`中的应用** - 根据文件名`Java8Test.java`,我们可以推测该文件包含一个测试类,可能...

    timestream-aggregates:时间序列流的聚合操作(objectMode 流按时间戳排序)

    时间流聚合 objectMode 流的聚合函数。 包含一组流转换,这些转换接受带有 sequenceKey 的 objectMode 流,并定期将每个记录的所有其他值聚合到块中。 这对时间序列数据最有用,因为分块聚合函数旨在按时间对数据...

    streamsets.tgz

    StreamSets 是一个强大的数据集成平台,专为现代大数据架构设计,提供数据流管理和处理功能。其Data Collector是该平台的核心组件,允许用户构建、运行和监控数据管道,将数据从各种源传输到不同的目标。标题提到的 ...

    Java Stream全面讲解

    Java Stream 是Java编程语言中处理数据流的一种抽象概念,它允许程序员以一种声明性的方式处理数据,特别是集合数据。在Java中,Stream主要用于处理大量数据,它可以与集合、I/O通道等多种数据源交互,提供了丰富的...

    实时ETL工具-StreamSets操作手册.docx

    StreamSets 提供了多种数据处理方式,包括转换、过滤、聚合等。可以根据需要选择合适的数据处理方式。 10. 实时统计信息 StreamSets 提供了实时统计信息,包括数据 throughput、 latency 等。可以根据需要查看实时...

    Stream流常用方法

    - **reduce方法**:将Stream中的元素聚合为单个值,可以用于求和、求最大值、最小值等操作。 - **collect方法**:将Stream转换回集合或其他形式的数据结构。 这些方法可以组合使用,形成所谓的“链式操作”,使...

    jiangdx-stream-master.zip

    首先,Stream是Java 8引入的一个新特性,它提供了一种声明式编程方式来处理集合数据,特别适合进行数据过滤、转换和聚合操作。Stream API可以用于处理任何数据源,如数组、集合、I/O通道等,使得处理大量数据变得...

    Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合.md

    Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda,给我们操作...Stream将要处理的元素集合看作一种流,在流的过程中,借助`Stream API`对流中的元素进行操作,比如:筛选、排序、聚合等。

    java8新特性 stream流的方式遍历集合和数组操作

    Stream 流可以看作是一种 lazy 的数据结构,它可以对集合和数组进行遍历、过滤、排序、聚合等操作。 Stream 流的目的 Stream 流的目的是为了强调做什么,而不是怎么做。它可以将遍历的方式变得更加优雅,而不是...

    Stream_Java8.pdf

    4. **聚合** (`max`, `min`, `count`):用于获取流中元素的最大值、最小值或者总数。 5. **筛选** (`filter`):根据条件选择流中的元素。 6. **映射** (`map`):将流中的元素转换成其他形式或类型。 7. **收集** (`...

Global site tag (gtag.js) - Google Analytics