当前位置: 首页 > 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://www.yutouwan.com/news/356941/

相关文章:

  • 建设校园网站国外研究现状怎么把源码做网站
  • 没后台的网站怎么做优化涪陵区小城镇建设管理处网站
  • 建设网站里的会员系统动漫专业最好的学校
  • 网站兼容模式怎么设置亚马逊关键词排名提升
  • 做网站赚钱吗?衡阳做网站
  • 网站设计可以吗前端开源项目网站
  • 做网站要多钱做网站的困难
  • 网站建设 讲话小程序健康码
  • 《网站建设 补充合同中国的网络营销公司
  • 蒲城县住房和城乡建设局网站给个免费的网址
  • 公益网站设计建设网站定制
  • 虚拟主机有哪些温州百度推广排名优化
  • 在农村开个网站要多少钱公司做的网站搜索不到
  • 网站高并发前端怎么做什么叫网络架构
  • 网站栏目结构图如何建设一个网站站
  • 网站意见反馈源码中国桥梁建设公司排名
  • 深圳网站建设app开发做服饰的有哪些网站
  • 吴中区做网站的公司公网怎么做网站
  • 建设网站公司哪里好wordpress 反应慢
  • dw网站根目录怎么做万网安装wordpress
  • 提升网站权重的方法网站做搜索引擎优化
  • 建立网站批复企业网址是什么?
  • 自己怎么设置会员网站劳务分包网
  • 电子商务网站建设.pdfidea网站开发
  • 建设银行u盾用网站打不开响应式模板网站模板下载
  • 石狮市建设局网站如何免费做网络推广
  • 软件专业做学校网站论文怎么选题河北省住建和城乡建设厅网站首页
  • 甘肃省建设局网站首页宜昌网站优化
  • 网页添加兼容性站点怎么在工商网站做实名认证
  • 2在线做网站给新公司做网站要多少钱