得到了这个例外:
java.lang.IllegalStateException: Duplicate key 50
我查看了使用该代码的每张地图,并且没有这样的密钥 它花了我一段时间,但我发现了问题,但它是令人困惑和非常有问题的理解不知道为什么他们这样做了
这是我的代码:
List<Person> listOfPeople = new LinkedList<Person>();
Map<String, Integer> myMap = listOfPeople
.stream()
.collect(Collectors.toMap(
Person::getNameInString,
Person::getAgeInInt
)
);
我的地图是String to Integer,所以50来自???
答案 0 :(得分:2)
答案是:
我带了一些挖掘找到引起这个问题的相关输入。
事实证明我有两个同名的人,
那么为什么不打印:
java.lang.IllegalStateException: Duplicate key "Ohad Edelstein"
例如。
他们得到50分了吗?!?! 50岁是第一个&#34; Ohad Edelstein&#34;!我是怎么做到的? 我查看了文档并找到了这个方法:
private static <T> BinaryOperator<T> throwingMerger() {
return (u,v) -> { throw new IllegalStateException(String.format("Duplicate key %s", u)); };
}
你和v是什么? 这是在 HashMap
中调用它的方法remappingFunction.apply(old.value, value)
打印价值有什么意义?!?!为什么不写点什么
java.lang.IllegalStateException: Duplicate key "Ohad Edelstein", first value 50 second value 35
任何方式,希望它会阻止其他人至少部分沮丧
仅供参考,处理异常问题 - 如果您对此感到满意,可以查看以下答案:
Ignore duplicates when producing map using streams