Collectors.groupingBy不接受空键。
- 论坛
- Collectors.groupingBy不接受空键。
23 浏览
Collectors.groupingBy不接受空键。
在Java 8中,这样可以运行:
Streamstream = Stream.of(ArrayList.class); HashMap > map = (HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass));
但是这样不行:
Streamstream = Stream.of(List.class); HashMap > map = (HashMap)stream.collect(Collectors.groupingBy(Class::getSuperclass));
Map允许空键,而List.class.getSuperclass()返回null。但是Collectors.groupingBy会在Collectors.java的第907行抛出NPE:
K key = Objects.requireNonNull(classifier.apply(t), "element cannot be mapped to a null key");
如果我创建自己的收集器,将这一行改为:
K key = classifier.apply(t);
它可以正常工作。
我的问题是:
1)Collectors.groupingBy的Javadoc没有说明它不应该映射空键。这种行为是否有必要?
2)是否有其他更简单的方法可以接受空键,而不需要创建自己的收集器?