Java - 查找最大大小的哈希表

标签 java java-8 java-stream

我有以下数据结构:

Map<Integer, Map<String,Double>>

----------------
|     | a    2 |
| 100 | b    1 |    
|     | c    2 |
----------------
|     | a    2 |
| 101 | c    2 |    
----------------
|     | a    2 |
| 102 | b    1 |    
|     | c    2 |
----------------

目标:获取包含最大尺寸内部 map 的外部 map 的 ID。

例如,100102,它们都包含一个大小为 3 的内部映射。

例如,我如何使用 Stream API

最佳答案

map.values().stream().max(Comparator.comparingInt(Map::size)).get()

是你要找的。

map.keySet().stream().max(Comparator.comparingInt(k -> map.get(k).size()))

如果您想要 key 而不是 map ,则可以使用上面的方法。 测试代码:

Map<Integer, Map<String, Integer>> map = new HashMap<>();
        Map<String, Integer> map2 = new HashMap<>();
        map2.put("A", 1);
        map2.put("B", 2);
        map2.put("C", 3);
        map.put(100, map2);
        map2 = new HashMap<>();
        map2.put("A", 1);
        map2.put("B", 2);
        map.put(101, map2);
        System.out.println(map.values()
                              .stream()
                              .max(Comparator.comparingInt(Map::size)).get());

关于Java - 查找最大大小的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220071/

相关文章:

java - 我怎样才能在UTC java中获得今天的具体时间

java - 创建自定义交替数字流

java - 使用 Java 8 Stream API 计算连续相同对象的数量

java - 如果两个复选框的语句被选中问题

java - 获取 java.lang.IllegalArgumentException : requirement failed while calling Sparks MLLIB StreamingKMeans from java application

java - MapStruct 按原样映射嵌套 bean

java - 如何使用流过滤器和求和

java - 如何从头开始在 Java 中实现功能切换?

java - 在封闭范围内定义的局部变量 log 必须是最终的或有效最终的

java - JDK8 CompletableFuture.supplyAsync如何处理interruptedException