首页 > 编程语言 >JAVA8 steam 常用示例

JAVA8 steam 常用示例

时间:2022-12-06 14:48:35浏览次数:48  
标签:Collectors stream 示例 JAVA8 demoList collect new TestVO steam

package hk.org.ha.tims;

import hk.org.ha.tims.dto.vo.UserRoleVo;
import lombok.Data;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;


public class StreamTest {
public static void main(String[] args) {
List<TestVO> demoList = Arrays.asList(new TestVO("1","张三"),new TestVO("2","李四"),new TestVO("3","王五"),new TestVO("4","王五"));
List<TestVO> demoList1 = Arrays.asList(new TestVO("1","张三"),new TestVO("2","李四"),new TestVO("3","王五"),new TestVO("4","王五"));
// for 循环
demoList.stream().forEach(item->{
System.out.println(item.toString());
});
demoList.forEach(item->{
System.out.println(item.toString());
});

//集合转map
Map<String,String> idNameMap = demoList.stream().collect(Collectors.toMap(TestVO::getId, TestVO::getName));
Map<String,TestVO> idVOMap = demoList.stream().collect(Collectors.toMap(TestVO::getId, Function.identity()));
//key重复处理
Map<String,TestVO> duplicateKeyMap = demoList.stream().collect(Collectors.toMap(TestVO::getId, Function.identity(),(item1,item2)->item2));


//过滤
List<TestVO> filterResult = demoList.stream().filter(item->"李四".equals(item.getName())).collect(Collectors.toList());

//去重
List<TestVO> distinctResult = demoList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TestVO::getName))), ArrayList::new));


//limit 取前N条
demoList.stream().limit(2).collect(Collectors.toList());

//skip 跳过前N条
demoList.stream().skip(2).collect(Collectors.toList());

//排序
demoList.stream().sorted(new Comparator<TestVO>() {
@Override
public int compare(TestVO o1, TestVO o2) {
return o1.getId().compareTo(o2.getId());
}
});


// 合并
List<TestVO> resultList = Stream.concat(demoList.stream(),demoList1.stream()).collect(Collectors.toList());

//parallelStream
demoList.parallelStream().forEach(item->{
System.out.println(item.toString());
});



}
}
@Data
class TestVO{
private String id;
private String name;

public TestVO(String id, String name) {
this.id = id;
this.name = name;
}

@Override
public String toString() {
return "TestVO{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}

标签:Collectors,stream,示例,JAVA8,demoList,collect,new,TestVO,steam
From: https://www.cnblogs.com/xiaoduilantian/p/16893462.html

相关文章

  • SQL Server Merge matched 再加其他条件的示例
    这里介绍使用临时表的方式进行Merge,额外的条件语句用红色标出:假设有一个字典表dic_dict第一步先创建临时表createtable#temp_source([code][varchar](20)COLLATE......
  • Mysqlbackup 增量备份恢复示例
    适用范围5.7+方案概述在生产环境中,我们都会对数据库进行备份,我们知道ORACLE的RMAN备份很灵活,有全备,增量,归档等等备份方式!针对MYSQL来讲,也有一款自己的备份工具mysql......
  • ASP.NET Core上传文件 示例代码记录
    微软文档https://learn.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.1 到下载页面如下: 下载代码后到3.x\SampleApp目录,vs打开该......
  • Java8新特性之方法引用
    1.1基本概念方法引用主要指通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行。方法引用是在特定场景下lambda表达式的一种......
  • JAVA8新特性学习
    只有不断的学习,才能成长。JAVA8-新特性1JAVA8函数示编程,比JAVA8之前的程序更加简洁通用。2JAVA8并行和并发处理上更好。以前JAVA8之前只能用1个核CPU,现在可以用多个核......
  • CountDownLatch详解以及用法示例
    一、什么是countDownlatchCountDownLatch是一个同步工具类,它通过一个计数器来实现的,初始值为线程的数量。每当一个线程完成了自己的任务,计数器的值就相应得减1。当计数器......
  • Java8 在流处理中使用集合索引号
    代码publicclassAnswerApp{publicstaticvoidmain(String[]args){List<String>list=Lists.newArrayList("Answer","AnswerAIL","AI");List......
  • Java8中Collectors求和功能的自定义扩展
    业务中需要将一组数据分类后收集总和,原本可以使用Collectors.summingInt(),但是我们的数据源是BigDecimal类型的,而Java8原生只提供了summingInt、summingLong、summingDouble......
  • Flutter 陈航 05-工程结构 示例项目 声明式
    本文地址目录目录目录05|Flutter是如何运行在原生系统上的计数器示例工程工程结构工程代码应用的整体结构MyAppMyHomePage页面布局及交互逻辑ScaffoldsetState代码流......
  • SwiftUI 常见组件示例
    基础组件TextText("Hamlet").font(.largeTitle)Text("byWilliamShakespeare").font(.caption).italic()ImageHStack{Image(systemName:"fol......