Java8 toMap异常消息令人困惑

时间:2018-05-23 11:52:54

标签: java java-8 hashmap java-stream

得到了这个例外:

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来自???

1 个答案:

答案 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