pojo类对象和默认创建list的方法
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor public class DotaHero { private String name; private String kind; private String sex; /** * 返回一个不同元素的数组 * @return */ public static List<DotaHero> bulidDiffObjectList(){ List<DotaHero> list = new ArrayList<>(); list.add(new DotaHero("影魔", "敏捷", "男")); list.add(new DotaHero("小黑", "敏捷", "女")); list.add(new DotaHero("马尔斯", "力量", "男")); return list; } }
测试类初始化一个List:
public class StreamTest { private List<DotaHero> dotaHeroes; @Before public void init(){ dotaHeroes = DotaHero.bulidDiffObjectList(); }
将根据list转换为该list对象中的一个属性映射该对象,name属性唯一的情况
@Test public void list2MapValueObject(){ Map<String, DotaHero> nameMapDotaHero = dotaHeroes.stream().collect(Collectors.toMap(DotaHero::getName, d -> d)); nameMapDotaHero.forEach((k,v) -> System.out.format("key=%s, value=%s\n", k, v)); }
将根据list转换为该list对象中的一个属性映射该对象,kind属性不唯一的情况,Collectors.toMap 对于重复的key会抛出IllegalStateException异常
当key值不唯一时,通过Collectors.groupingBy将list转换成key映射list对象的格式:
/** * 将根据list转换为该list对象中的一个属性映射该对象 * kind属性不唯一的情况 */ @Test public void list2MapValueList(){ /* Collectors.toMap 对于重复的key会抛出IllegalStateException异常 Map<String, DotaHero> nameMapDotaHero = dotaHeroes.stream().collect(Collectors.toMap(DotaHero::getKind, d -> d)); nameMapDotaHero.forEach((k,v) -> System.out.format("key=%s, value=%s\n", k, v)); */ // 当key值不唯一时,通过Collectors.groupingBy将list转换成key映射list对象的格式 Map<String, List<DotaHero>> nameMapDotaHeroList = dotaHeroes.stream().collect(Collectors.groupingBy(DotaHero::getKind)); nameMapDotaHeroList.forEach((k,v) -> System.out.format("key=%s, value=%s\n", k, v)); }
来源:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2017-05-14 post与get的区别
2017-05-14 Linux初学时的一些常用命令(3)
2017-05-14 Linux初学时的一些常用命令(2)
2017-05-14 Linux初学时的一些常用命令(1)
2017-05-14 linux的一些目录结构