Java 8流-查找Map <string,list <object =“” >>的最大计数值

时间:2018-07-18 18:16:22

标签: java java-8 java-stream

我对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();
    }
}

1 个答案:

答案 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