Java – find hash table with maximum size

I have the following data structures:

Map<Integer,Map<String,Double>>

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

目标:获取包含具有最大大小的内部地图的外部地图的ID.

例如,100或102,两者都包含大小为3的内部地图.

例如,我如何使用Stream API?

Solution

This should output 100 or the key with the largest element

map.keySet().stream().max((v1,v2) -> {
                return Integer.compare(map.get(v1).size(),map.get(v2).size());
            })@H_419_12@ 
 

或使用比较器

map.keySet().stream().max(Comparator.comparingInt(v -> map.get(v).size()))@H_419_12@ 
 

完整代码:

Map<Integer,Double>> map = new HashMap<>();
Map<String,Double> map100 = new HashMap<>();
map100.put("a",2.0);
map100.put("b",1.0);
map100.put("c",2.0);
Map<String,Double> map101 = new HashMap<>();
map101.put("a",2.0);
map101.put("b",1.0);
Map<String,Double> map102 = new HashMap<>();
map102.put("a",2.0);
map102.put("b",1.0);
map102.put("c",2.0);
map102.put("d",2.0);
map.put(100,map100);
map.put(101,map101);
map.put(102,map102);

System.out.println(map.keySet().stream().max(Comparator.comparingInt(v -> map.get(v).size())));

System.out.println(map.keySet().stream().max((v1,v2) -> {
    return Integer.compare(map.get(v1).size(),map.get(v2).size());
}));@H_419_12@
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>