【发布时间】:2020-07-08 15:36:29
【问题描述】:
我想出了以下方法,它确实有效,但我觉得应该有一种更干净的单线方式,不依赖于“外部”地图(下面的result):
public TreeMap<Integer, HashSet<String>> mapLenToString(List<String> strings){
TreeMap<Integer, HashSet<String>> result = new TreeMap<>();
strings.stream()
.forEach(s -> {
int len = s.length();
if (result.containsKey(len)) {
HashSet<String> larger = result.get(len);
larger.add(s);
result.replace(len, larger);
}
else {
HashSet<String> newSet = new HashSet<>();
newSet.add(s);
result.put(len, newSet);
}
});
return result;
}
【问题讨论】:
-
顺便问一下,
HashSet是绝对必要的吗? -
@user 不,只是将它用于
larger.add(s)行。
标签: java java-stream treemap one-liner