本篇内容介绍了“使用stream的Collectors.toMap()方法常见问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java8开始的流式编程很大程度上简化了我们的代码,提高了开发效率。我们经常会使用到stream的Collectors.toMap()来将List转换Map1、java.lang.IllegalStateException: Duplicate key2、java.lang.NullPointerException第一个是由于在List转Map过程中Map集合的key重复导致的;第二个是由于在List转Map过程中Map集合的value有null导致的(当存在value值为空时,使用Collectors.toMap()会报NPE,因为底层调用了Map的merge方法,而map方法规定了此处的vlue不能为null,从而抛出空指针异常);1、Collectors.toMap(dto ->key值 , dto -> dto,(v1,v2) -> v1)在后面添加(v1,v2)->v1 指定选取第一个值 当key值重复的时候,根据情况而定选取第一个还是第二个)2、自定义一个Map来接收,不使用Collectors.toMap()第一种情况示例:第二种情况示例:List TO MapList Stream 转换 Map时向collect()方法中传递Collector对象,对象由Collectors.toMap()方法返回。Console
class java.util.LinkedHashMap
class java.util.HashMap
{v1=g1, v3=g3}
Exception in thread “main” java.lang.IllegalStateException: Duplicate key g1
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
…toMap()函数重载:未指定合并函数mergeFunction情况下,传入throwingMerger()返回BinaryOperator对象,当出现key重复时,调用合并函数!未指定免费云主机域名Supplier实例情况下,默认生成HashMap实例。补充关于合并函数Console
{v1=g2, v3=g3}
{v1=g1g2g2, v3=g3}传入Lambda表达式将转化为BinaryOperator mergeFunction对象,合并处理value,非Key!!!比如:“使用stream的Collectors.toMap()方法常见问题如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!
本篇内容介绍了“java空接口有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本教程操作环境:windows7系统、java10版,DELL G3电脑。…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。