我个人认为以下代码是最易读的解决方案:
SortedMap<String, Integer> res = new TreeMap<>();
this.booksColl.forEach((key, val) -> res.put(key, val.size()));
请注意,Collectors.toMap(...)
的两个参数版本返回的是 Map
类型,而不是 SortedMap
。
Map<String, Integer> res = this.booksColl.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e->e.getValue().size()));
如果你想得到一个 SortedMap
,你需要使用四个参数版本的 Collectors.toMap(...)
:
SortedMap<String, Integer> res = this.booksColl.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, e->e.getValue().size(), (v1, v2) -> v1, TreeMap::new));