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
在Java编程中,分组聚合是一项重要的数据处理技术,它允许我们按照特定的规则将数据组织成多个逻辑组,然后对这些组进行...在Java的集合框架和流API中,分组聚合是一个强大而灵活的工具,值得开发者深入研究和应用。
Stream API允许我们以声明性方式处理数据,非常适合进行聚合操作,如过滤、映射和减少。下面将详细讨论`stream`操作的相关知识点,并结合`StreamTest.java`和`Person.java`两个文件的可能实现来阐述。 1. **什么是...
以下将详细介绍Stream流的使用,以及它在Java8中的重要性。 首先,Stream API是一种用于处理集合的新接口,它可以对集合进行各种操作,如过滤、映射、聚合等,而无需显式地遍历集合。这种处理方式称为“函数式编程...
* 数据处理:可以使用 Stream 流来处理大量数据,例如对数据进行过滤、映射、聚合等操作。 * 并发处理:可以使用 Stream 流来进行并发处理,例如使用多个线程来处理大量数据。 常用函数式接口 除了 Predicate 接口...
Java Stream 流是Java 8引入的一个重要特性,与Lambda表达式一起,为处理集合提供了新的方式。Stream 不是存储数据的容器,而是提供了一种对数据进行操作的抽象概念,它可以来源于数组、集合或其他数据源。Stream ...
1. 数据处理:Stream流可以用于处理大规模数据,例如数据过滤、数据转换、数据聚合等。 2. 数据分析:Stream流可以用于数据分析,例如数据统计、数据挖掘等。 3. 并发编程:Stream流可以用于并发编程,例如使用...
Stream流不是一种数据结构,它也不是集合元素,而是一种算法和计算的方式,专门用于对集合对象进行各种便利、高效的聚合操作,或者大批量数据操作。 创建Stream流可以通过Collection.stream()函数创建一个Stream...
在Java中,Stream API是Java 8中引入的一种新的数据处理方式,它可以对集合进行各种操作,如过滤、映射、聚合等。Lambda表达式是Java 8中引入的一种新的函数式编程方式,它可以将函数作为参数传递给其他函数。 ...
- **使用Stream.generate()**:可以生成无限流或有限流。 ```java Stream<String> generatedStream = Stream.generate(() -> "element").limit(10); ``` - **使用Stream.iterate()**:可以创建基于初始值和迭代...
- 使用`parallelStream()`创建并行流,但需注意并行流并不总是比顺序流快,因为并行化有额外的开销。 6. **`Java8Test.java`中的应用** - 根据文件名`Java8Test.java`,我们可以推测该文件包含一个测试类,可能...
时间流聚合 objectMode 流的聚合函数。 包含一组流转换,这些转换接受带有 sequenceKey 的 objectMode 流,并定期将每个记录的所有其他值聚合到块中。 这对时间序列数据最有用,因为分块聚合函数旨在按时间对数据...
StreamSets 是一个强大的数据集成平台,专为现代大数据架构设计,提供数据流管理和处理功能。其Data Collector是该平台的核心组件,允许用户构建、运行和监控数据管道,将数据从各种源传输到不同的目标。标题提到的 ...
Java Stream 是Java编程语言中处理数据流的一种抽象概念,它允许程序员以一种声明性的方式处理数据,特别是集合数据。在Java中,Stream主要用于处理大量数据,它可以与集合、I/O通道等多种数据源交互,提供了丰富的...
StreamSets 提供了多种数据处理方式,包括转换、过滤、聚合等。可以根据需要选择合适的数据处理方式。 10. 实时统计信息 StreamSets 提供了实时统计信息,包括数据 throughput、 latency 等。可以根据需要查看实时...
- **reduce方法**:将Stream中的元素聚合为单个值,可以用于求和、求最大值、最小值等操作。 - **collect方法**:将Stream转换回集合或其他形式的数据结构。 这些方法可以组合使用,形成所谓的“链式操作”,使...
首先,Stream是Java 8引入的一个新特性,它提供了一种声明式编程方式来处理集合数据,特别适合进行数据过滤、转换和聚合操作。Stream API可以用于处理任何数据源,如数组、集合、I/O通道等,使得处理大量数据变得...
Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda,给我们操作...Stream将要处理的元素集合看作一种流,在流的过程中,借助`Stream API`对流中的元素进行操作,比如:筛选、排序、聚合等。
Stream 流可以看作是一种 lazy 的数据结构,它可以对集合和数组进行遍历、过滤、排序、聚合等操作。 Stream 流的目的 Stream 流的目的是为了强调做什么,而不是怎么做。它可以将遍历的方式变得更加优雅,而不是...
4. **聚合** (`max`, `min`, `count`):用于获取流中元素的最大值、最小值或者总数。 5. **筛选** (`filter`):根据条件选择流中的元素。 6. **映射** (`map`):将流中的元素转换成其他形式或类型。 7. **收集** (`...