我创建一个Map从List如下:
List<String> strings = Arrays.asList("a", "bb", "ccc");
Map<String, Integer> map = strings.stream()
.collect(Collectors.toMap(Function.identity(), String::length));
Run Code Online (Sandbox Code Playgroud)
我希望保持与之相同的迭代顺序List.如何创建LinkedHashMap使用Collectors.toMap()方法?
我有这个代码来获取地图:
List<MyObject> myList = myMethod.getList();
myList.stream().collect(
Collectors.toMap(
MyObject::getKey,
MyObject::getValue,
(e1, e2) -> {
System.out.println("Duplicate keys !!!");
return e1;
},
LinkedHashMap::new
)
);
Run Code Online (Sandbox Code Playgroud)
如何用重复键打印消息"重复键"?
我正在实现使用合并功能的自己的收集器.不幸的是,对于我的一些情况,我不能重用抛出IllegalStateException的以下JDK合并函数.
java.util.stream.Collectors#throwingMerger
Run Code Online (Sandbox Code Playgroud)
它发生的原因是它具有私有访问修饰符,并且来自其他(非内部)类的访问受到限制.但是,javadoc说:
这可以用于强制假设所收集的元素是不同的
但是,正如我所见,java doc已经过时了.它不能使用.问题是JDK是否为java开发人员提供类似功能(类似方法,常量等),或者应该自己编写?