我对Java 8不太熟悉,并希望了解是否可以使用流找到与以下代码等效的东西。
下面的代码主要尝试查找键值最大的键并返回该键。在这种格式下,我找不到任何帮助。
int max = 0;
String maxValuesString = null;
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
if(max < entry.getValue().size()) {
maxValuesString = entry.getKey();
max = entry.getValue().size();
}
}
答案 0 :(得分:8)
您可以将max
与用于检查值大小的比较器一起使用
String maxValuesString = map.entrySet()
.stream()
.max(Comparator.comparingInt(entry -> entry.getValue().size()))
.map(Map.Entry::getKey)
.orElse(null);
编辑:感谢Andreas的comment below所做的optional.map