使用Java流从HashMap获取特定密钥

时间:2018-12-09 13:51:52

标签: java java-8 hashmap java-stream

我有一个HashMap<Integer, Integer>,我愿意获得特定值的密钥。

例如我的HashMap:

Key|Vlaue
2--->3
1--->0
5--->1

我正在寻找Java流操作来获取具有最大值的键。在我们的示例中,键2具有最大值。

所以应该是2。

有一个for循环是可能的,但我正在寻找Java流方式。

import java.util.*;

public class Example {
     public static void main( String[] args ) {
         HashMap <Integer,Integer> map = new HashMap<>();
         map.put(2,3);
         map.put(1,0);
         map.put(5,1);
         /////////

     }
}

2 个答案:

答案 0 :(得分:9)

您可以流式处理条目,找到最大值并返回相应的键:

Integer maxKey = 
          map.entrySet()
             .stream() // create a Stream of the entries of the Map
             .max(Comparator.comparingInt(Map.Entry::getValue)) // find Entry with 
                                                                // max value
             .map(Map.Entry::getKey) // get corresponding key of that Entry
             .orElse (null); // return a default value in case the Map is empty

答案 1 :(得分:1)

public class GetSpecificKey{
    public static void main(String[] args) {
    Map<Integer,Integer> map=new HashMap<Integer,Integer>();
    map.put(2,3);
    map.put(1,0);
    map.put(5,1);
     System.out.println( 
      map.entrySet().stream().
        max(Comparator.comparingInt(Map.Entry::getValue)).
        map(Map.Entry::getKey).orElse(null));
}

}