2017-10-11 4 views
-2

J'ai la manière ci-dessous de convertir carte à la liste par Java 8, mais je veux utiliser la référence de la méthode au lieu de lambda, s'il vous plaît indiquer comment convertir le programme ci-dessous pour utiliser fonctionnalité de référence de la méthode de Java 8carte de conversion à la liste par référence méthode en java 8

voici mon programme

Map<Integer, String> map = new HashMap<>(); 
    map.put(10, "apple"); 
    map.put(20, "orange"); 
    map.put(30, "banana"); 
    map.put(40, "watermelon"); 
    map.put(50, "dragonfruit"); 

    System.out.println("\n1. Export Map Key to List..."); 
    List<Integer> result = map.entrySet() 
         .stream() 
         .map(x -> x.getKey()) 
         .collect(Collectors.toList());   
    System.out.println(result); 
+2

Avez-vous regardé dans [docs Carte] (https://docs.oracle.com/javase/7/docs/api/java/util/Map.html)? Vous pouvez utiliser la méthode 'Map # keySet', elle renvoie un' Set', mais cela ne devrait pas poser de problème. – Shirkam

+1

Il n'y a aucun sens à utiliser '.entrySet()' quand vous n'êtes intéressé que par les clés en premier lieu. Le simple fait d'utiliser 'keySet()' dès le début vous sauve de l'étape '.map (x -> x.getKey())'. D'un autre côté, vous n'avez pas du tout besoin d'une opération de flux. Si vous avez vraiment besoin d'un 'instantané list' au lieu du' keySet() 'vue, vous pouvez simplement utiliser' Liste result = new ArrayList <> (map.entrySet()); '. – Holger

Répondre

3

Qu'est-ce que vous appelez ici map(x -> x.getKey()) est en fait Map.Entry.getKey

donc, essayez peut-être ce

map(Map.Entry::getKey) 
1

Demandez à la keySet() de la carte. Il retourne un ensemble de clés.

Map<Integer, String> map = new HashMap<>(); 
map.put(10, "apple"); 
map.put(20, "orange"); 
map.put(30, "banana"); 
map.put(40, "watermelon"); 
map.put(50, "dragonfruit"); 

System.out.println("\n1. Export Map Key to List..."); 
Collection<Integer> result = map.keySet();   
System.out.println(result);