2016-05-04 4 views
0

Ich habe Liste:Wie arraylist mit Hasmap vergleichen und den Schlüssel von Hashmap basierend auf Wert erhalten?

ArrayList<String> list = new ArrayList<>(); 

und Karte:

Map<String, List<String>> map = new HashMap<>(); 

Ich brauche Werte der Liste zu vergleichen und Karte und Return-Taste auf der Grundlage dieser Wert

Das Problem ist, dass Ich weiß nicht, wie man Wiederholungen synchronisiert, da arraylist kleinere Größe als jede Liste in der Karte hat.

Auch habe ich versucht, diese Methode:

public static Object getKeyByValue(Map<String,List<String>> map, String value) { 
    for (Entry<String, List<String>> entry : map.entrySet()) { 
     if (Objects.equals(value, entry.getValue())) { 
      return entry.getKey(); 
     } 
    } 
    return null; 
} 

getKeyByValue(map,list.get(0)); 

..aber dieser Aufruf auch falsch retuned für jeden Wert Wenn es bestimmten Wert ...

Irgendwelche Ideen, wie jeder Schlüssel? Vielen Dank

Antwort

2

Sie vergleichen eine List<String> mit einer String, so würde es nie wahr zurückgeben.

Verwenden List.contains stattdessen, um zu bestimmen, ob die String im List erscheint:

if (entry.getValue().contains(value)) { 
     return entry.getKey(); 
    } 
Verwandte Themen