为什么 Collectors.toMap 报告值而不是重复键错误?
2022-09-01 18:47:36
这确实是一个关于小细节的问题,但我的印象是在这里出了什么问题。如果使用 Collectors.toMap 方法添加重复的键,则会引发异常,并显示消息“重复键”。为什么报告的是值而不是键?或者两者兼而有之?这真的很误导,不是吗?
这里有一个小测试来演示行为:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestToMap {
public static void main(String[] args) {
List<Something> list = Arrays.asList(
new Something("key1", "value1"),
new Something("key2", "value2"),
new Something("key3", "value3a"),
new Something("key3", "value3b"));
Map<String, String> map = list.stream().collect(Collectors.toMap(o -> o.key, o -> o.value));
System.out.println(map);
}
private static class Something {
final String key, value;
Something(final String key, final String value){
this.key = key;
this.value = value;
}
}
}