2013-04-12 22 views
5
ArrayList<HashMap<String, Integer>> myList = new ArrayList<HashMap<String, Integer>>(); 

    HashMap<String, Integer> check = new HashMap<String, Integer>(); 

Ich habe einige hashmaps in meiner Array-Liste und ich möchte die hashmaps für Dubletten wie diese vergleichen 0,1 0,2 0,3 0,4. 1,2 1,3 1,4 ..... 2,3 2,4 usw.Schleife durch eine ArrayList von HashMaps Java

Ich machte eine verschachtelte for-Schleife, so dass dies aber stecken auf wie auf die hashmaps zugreifen und versuchte dies

for (int a =0; a<myList.size();a++){ 
      for(int b=a+1; b<myList.size();b++){ 
       for (String key : myList[a].check.keySet()) 
      } 
     } 

Aber das funktioniert nicht. Wie greife ich auf alle Schlüssel meiner hashmap zu, wenn sie in der Arraylist sind? Wie kann ich das erreichen?

+2

@BalaR zu testen: 'ArrayList' kann nicht mit eckigen Klammern angesprochen werden. – jlordo

Antwort

7

Der Operator [] kann nur für Arrays verwendet werden. Liste hat ein get(int index) Verfahren das Element an einem bestimmten Index zu erhalten:

for (String key : myList.get(a).keySet()) { 
    ... 
} 

Java-Klassen sind dokumentiert: http://docs.oracle.com/javase/6/docs/api/

+2

Vielleicht möchten Sie auch ändern, wie Sie myList deklarieren: Liste > myList = new ArrayList >(); – vptheron

+2

@vtheron Wenn es nur 'List' ist, sollte' Iterator' anstelle von direkten Indizes verwendet werden; Wenn "List" zufällig "LinkedList" ist, wird die Indizierung langsam sein. –

7

Hier ist ein Beispiel iterieren. Ich habe Dummy-Daten den Code

private void ArrayListAndHashMap() 
    { 
     ArrayList<HashMap<String, Integer>> myList = new ArrayList<HashMap<String, Integer>>(); 


     HashMap<String, Integer> data1 = new HashMap<String, Integer>(); 
     data1.put("0",new Integer(1)); 
     data1.put("1",new Integer(2)); 
     data1.put("2",new Integer(3)); 
     data1.put("3",new Integer(4)); 

     HashMap<String, Integer> data2 = new HashMap<String, Integer>(); 
     data1.put("10",new Integer(10)); 
     data1.put("11",new Integer(20)); 
     data1.put("12",new Integer(30)); 
     data1.put("13",new Integer(40)); 

     myList.add(data1); 
     myList.add(data2); 


     for (int a =0; a<myList.size();a++) 
     { 
      HashMap<String, Integer> tmpData = (HashMap<String, Integer>) myList.get(a); 
      Set<String> key = tmpData.keySet(); 
      Iterator it = key.iterator(); 
      while (it.hasNext()) { 
       String hmKey = (String)it.next(); 
       Integer hmData = (Integer) tmpData.get(hmKey); 

       System.out.println("Key: "+hmKey +" & Data: "+hmData); 
       it.remove(); // avoids a ConcurrentModificationException 
      } 

     }  
    } 

Ausgang ist

Key: 3 & Data: 4 
Key: 2 & Data: 3 
Key: 10 & Data: 10 
Key: 1 & Data: 2 
Key: 0 & Data: 1 
Key: 13 & Data: 40 
Key: 11 & Data: 20 
Key: 12 & Data: 30 
Verwandte Themen