Java 8流-查找映射的最大计数值<;字符串,列表<;对象>&燃气轮机;

Java 8流-查找映射的最大计数值<;字符串,列表<;对象>&燃气轮机;,java,java-8,java-stream,Java,Java 8,Java Stream,我对Java8不太熟悉,我想看看是否可以使用streams找到与下面代码等价的东西 下面的代码主要尝试查找具有最大值的键,并返回该键。我在这个格式上找不到什么帮助 int max = 0; String maxValuesString = null; for (Map.Entry<String, List<String>> entry : map.entrySet()) { if(max < entry.getValue().size()) {

我对Java8不太熟悉,我想看看是否可以使用streams找到与下面代码等价的东西

下面的代码主要尝试查找具有最大值的键,并返回该键。我在这个格式上找不到什么帮助

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();
    }
}
int max=0;
字符串maxValuesString=null;
对于(Map.Entry:Map.entrySet()){
如果(最大值
您可以将
max
与检查值大小的比较器一起使用

String maxValuesString = map.entrySet()
            .stream()
            .max(Comparator.comparingInt(entry -> entry.getValue().size()))
            .map(Map.Entry::getKey) 
            .orElse(null);
编辑:感谢Andreas提供了清晰的
可选。映射

以获得最佳答案:1)命名变量,与问题相同。2) 如果映射为空,请不要崩溃和烧录,即结果应该与问题相同(
null
)。将
.get().getKey()
替换为
.map(map.Entry::getKey)。orElse(null)
以支持空映射。谢谢:)非常有用。这是我第一次来这里,我很高兴看到如此迅速的反应:D