我有一个方法,它接收一个map of map并且应该返回一个TreeMap
public TreeMap<String, String> buildTreeMap(Stream<Map<String, String>> inStream) {
return stream.collect(toMap(???));
}
如何让它返回TreeMap?
答案 0 :(得分:5)
stream.collect(TreeMap::new, TreeMap::putAll,
(map1, map2) -> { map1.putAll(map2); return map1; });
...假设您想将所有地图合并为一个大地图。
如果您需要不同的语义来合并同一个键的值,请执行类似
的操作stream.flatMap(map -> map.entrySet().stream())
.collect(toMap(
Entry::getKey, Entry::getValue, (v1, v2) -> merge(v1, v2), TreeMap::new));
答案 1 :(得分:0)
如果你正在使用 groupingBy ,
stream()
.collect(
Collectors.groupingBy(
e -> e.hashCode(), TreeMap::new, Collectors.toList()))
其中e -> e.hashCode
是关键功能,例如Entry::getKey
,Student::getId
和Collectors.toList()
是downstream
即树形图中值需要数据类型
这会产生TreeMap<Integer, List>