JAVA8新特性-Stream流操作集合
【摘要】 JAVA8新特性-Stream流操作集合
Stream类全路径为:java.util.stream.Stream
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。
Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。
stream的特性
- stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。
- stream不会改变数据源,通常情况下会产生一个新的集合或一个值。
- stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。
集合取某个值的集合
List<String> taskLidList = qualityVideoList.stream()
.map(QualityDetails::getTaskLid).distinct().collect(Collectors.toList());
集合转map集合
Map<String, List<QualityResultDetails>> detailMap = detailsList.stream().filter(f -> !Strings.isNullOrEmpty(f.getTaskLid()))
.collect(Collectors.groupingBy(QualityResultDetails::getTaskLid, Collectors.toList()));
集合转map实体
Map<String, CustomerStaffDataVO> collect = customerStaffDataVOList.stream().collect(
Collectors.toMap(CustomerStaffDataVO::getAdminUserLid, v -> v, (v1, v2) -> v1)
);
集合切成多个集合
List<CustomerServiceLog> customerServiceLogLists = Lists.newArrayList();
List<CompletableFuture> completableFutureList = Lists.newArrayList();
List<List<String>> split = CollectionUtil.split(taskLidList, Runtime.getRuntime().availableProcessors());
for (List<String> stringList : split) {
completableFutureList.add(CompletableFuture.runAsync(() -> getCustomerServiceLogList(stringList, customerServiceLogLists)));
}
CompletableFuture.allOf(completableFutureList.toArray(new CompletableFuture[completableFutureList.size()])).join();
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)