получить конкретный ключ из HashMap, используя поток Java - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть 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 голосов
/ 10 декабря 2018
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));
}

}

0 голосов
/ 09 декабря 2018

Вы можете выполнять потоковую передачу записей, найти максимальное значение и вернуть соответствующий ключ:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...