2010-07-27 35 views
17

Czy istnieje sposób iteracji poprzez javascript Hashmap i wydrukować wszystkie wartości dla każdego klucza, który jest częścią Hashmap?java ishmap key iteration

Odpowiedz

16

Z for-each loop użyć Map.keySet() na klucze iteracji, Map.values() dla wartości iteracji i Map.entrySet() dla iteracji par klucz/wartość.

Należy zauważyć, że wszystkie te elementy są bezpośrednimi widokami mapy używanej do ich pozyskania, więc każda modyfikacja którejkolwiek z nich lub samej mapy będzie odzwierciedlać także wszystkie inne.

1
hashmap.keySet().iterator() 

użyć pętli for do iteracji.

następnie użyć hashmap.get(item) aby uzyskać poszczególne wartości,

Alternatywnie wystarczy użyć entrySet() uzyskania iterator na wartości.

+1

Lub, w zależności od tego, co ping oznacza przez "wartości", 'hashmap.values ​​(). Iterator()'. –

2
for (Map.Entry<T,U> e : map.entrySet()) 
{ 
    T key = e.getKey(); 
    U value = e.getValue(); 
    . 
    . 
    . 
} 

Ponadto, jeśli używasz LinkedHashMap jak wdrożenie, będziesz iteracyjne w kolejności pary kluczy/wartości zostały wstawiony. Jeśli to nie ma znaczenia, użyj HashMap.

+0

Bardzo jasna odpowiedź, dzięki –

21

Tak, robisz to, pobierając entrySet() mapy. Na przykład:

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

// ... 

for (Map.Entry<String, Object> entry : map.entrySet()) { 
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); 
} 

(oczywiście wymienić String i Object z typami że konkretny Map posiada - kod powyżej jest tylko przykładem).

2
public class abcd { 
    public static void main(String[] args) 
    { 
     Map<Integer, String> testMap = new HashMap<Integer, String>(); 
     testMap.put(10, "a"); 
     testMap.put(20, "b"); 
     testMap.put(30, "c"); 
     testMap.put(40, "d"); 
     for (Entry<Integer, String> entry : testMap.entrySet()) { 
      Integer key=entry.getKey(); 
      String value=entry.getValue(); 
     } 
    } 
}