当前位置: 首页 > news >正文

济南地产行业网站开发地方网站发展

济南地产行业网站开发,地方网站发展,公司旅游视频网站模板,甜品网页设计图片Java8 中 List 转 Map(Collectors.toMap) 使用技巧 在实际项目中我们经常会用到 List 转 Map 操作#xff0c;在过去我们可能使用的是 for 循环遍历的方式。举个例子#xff1a; 先定义类#xff1a; // 简单对象 Accessors(chain true) // 链式方法 lombok.Data clas…Java8 中 List 转 Map(Collectors.toMap) 使用技巧 在实际项目中我们经常会用到 List 转 Map 操作在过去我们可能使用的是 for 循环遍历的方式。举个例子 先定义类 // 简单对象 Accessors(chain true) // 链式方法 lombok.Data class User {private String id;private String name; }然后有这样一个 List ListUser userList Lists.newArrayList(new User().setId(A).setName(张三),new User().setId(B).setName(李四),new User().setId(C).setName(王五) );我们希望转成 Map 的格式为 A- 张三 B- 李四 C- 王五 过去的做法循环 MapString, String map new HashMap(); for (User user : userList) {map.put(user.getId(), user.getName()); }使用 Java8 特性 Java8 中新增了 Stream 特性使得我们在处理集合操作时更方便了。 以上述例子为例我们可以一句话搞定 userList.stream().collect(Collectors.toMap(User::getId, User::getName));当然如果希望得到 Map 的 value 为对象本身时可以这样写 userList.stream().collect(Collectors.toMap(User::getId, t - t));或 userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));关于 Collectors.toMap 方法 Collectors.toMap 有三个重载方法 toMap(Function? super T, ? extends K keyMapper, Function? super T, ? extends U valueMapper); toMap(Function? super T, ? extends K keyMapper, Function? super T, ? extends U valueMapper,BinaryOperatorU mergeFunction); toMap(Function? super T, ? extends K keyMapper, Function? super T, ? extends U valueMapper,BinaryOperatorU mergeFunction, SupplierM mapSupplier); 参数含义分别是 keyMapperKey 的映射函数valueMapperValue 的映射函数mergeFunction当 Key 冲突时调用的合并方法mapSupplierMap 构造器在需要返回特定的 Map 时使用 还是用上面的例子如果 List 中 userId 有相同的使用上面的写法会抛异常 ListUser userList Lists.newArrayList(new User().setId(A).setName(张三),new User().setId(A).setName(李四), // Key 相同 new User().setId(C).setName(王五) ); userList.stream().collect(Collectors.toMap(User::getId, User::getName));// 异常 java.lang.IllegalStateException: Duplicate key 张三 at java.util.stream.Collectors.lambda$throwingMerger$114(Collectors.java:133)at java.util.HashMap.merge(HashMap.java:1245)at java.util.stream.Collectors.lambda$toMap$172(Collectors.java:1320)at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)at Test.toMap(Test.java:17)...这时就需要调用第二个重载方法传入合并函数如 userList.stream().collect(Collectors.toMap(User::getId, User::getName, (n1, n2) - n1 n2));// 输出结果 A- 张三李四 C- 王五 第四个参数mapSupplier用于自定义返回 Map 类型比如我们希望返回的 Map 是根据 Key 排序的可以使用如下写法 ListUser userList Lists.newArrayList(new User().setId(B).setName(张三),new User().setId(A).setName(李四),new User().setId(C).setName(王五) ); userList.stream().collect(Collectors.toMap(User::getId, User::getName, (n1, n2) - n1, TreeMap::new) );// 输出结果 A- 李四 B- 张三 C- 王五
http://wiki.neutronadmin.com/news/356941/

相关文章:

  • 网站营销方案设计公司wordpress777
  • 苏州市住房和城乡建设局信息网站建筑公司企业发展建议
  • 网站开发的形式是网站开发制作包括哪些的基本流程
  • 天津seo网站排名优化公司网站备案 自己的服务器
  • 女人与马做受网站格尔木市住建和城乡建设局网站
  • 制作企业网站用什么软件宁波新闻
  • 老外做的汉字网站外贸网站的公司介绍
  • 盐都城乡建设部网站首页网站开发旅游前台模板
  • 博山区住房和城乡建设局网站php做网站评价
  • 品牌宣传网站有哪些视频网站开发费用
  • 房屋中介做网站的书籍免费网站开发软件平台
  • 网站维护费怎么做会计分录2021年新闻大事件
  • 北京网站的建立的互联网 医疗网站建设有哪些城市
  • 潍坊住房与城市建设部网站简述网站开发平台
  • 网站设计与实现毕业设计网站制作 郑州
  • 爱站网挖掘词网站公司必须帮备案
  • 给一个网站微信公众号seo
  • 电子商务网站建设 填空题网络营销相关政策有哪些
  • 滨湖网站制作备案期间 网站
  • 张家港建网站的公司网站开发用那个软件
  • 如何查网站注册信息网站开发公司售后服务
  • 小说网站建设模板济南信息网
  • 米拓网站建设步骤爱玖货源站
  • 大连模板建站软件js网站开发教程
  • 通明建设网站新手建设html5网站
  • 网站建设阶段推广策略国外著名室内设计网址
  • 企业网站建设实训网站怎么做qq的授权登陆
  • 平度好的建设网站网站互点联盟
  • 深圳互助资金盘网站开发简述一个网站开发流程
  • 全屏的网站营销网站建设公司地址