Java 8 流 - 查找 Map<String, List<Object>> 的最大计数值

标签 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();
    }
}

最佳答案

您可以将 max 与检查值大小的比较器一起使用

String maxValuesString = map.entrySet()
            .stream()
            .max(Comparator.comparingInt(entry -> entry.getValue().size()))
            .map(Map.Entry::getKey) 
            .orElse(null);

编辑:感谢comment below Andreas 为干净的 optional.map

关于Java 8 流 - 查找 Map<String, List<Object>> 的最大计数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408550/

相关文章:

java - <c :out/> single quote vs double quote. 有什么区别?

java - 如何用 Apache Derby 代替 MySQL Server 作为 PHP 应用数据库?

java - hibernate 不保存外键

java - 在特定情况下使用 Java Stream 映射和过滤响应代码

java - 我应该在 Java 8 Streams 中使用共享可变变量更新吗

java - 有没有一种优雅的方法可以将 Map<P, Optional<Q>> 转换为稀疏 Map<P, Q>?

java - 暂停 kafka 在响应式(Reactive) Kafka 中读取

java - 检查字符串是否仅包含 Unicode 值 [\u0030-\u0039] 或 [\u0660-\u0669]

java - 处理列表流并收集到只有非空值的 map/ImmutableMap

java - Collectors.toMap 具有相同的键(打印相同的键)