2016-12-29 7 views
1

Ich versuche, die Anzahl der doppelten Werte von String ArrayList, i die Aufgabe erreicht haben, zu erhalten, aber nicht vollständig. Ich kann den counts von doppelten elements meiner arrayList bekommen, aber das Problem ist, dass die order von arrayList zerstört, wenn ich die occurrences von elementsdie Anzahl der doppelten Werte in Arraylist in Java bekommen, ohne die Reihenfolge der beeinflussen Arraylist

hier ist mein code:

Map<String, Integer> counts = new HashMap<String, Integer>(); 

    for (String str : t.courseName) { 
     if (counts.containsKey(str)) { 
      counts.put(str, counts.get(str) + 1); 
     } else { 
      counts.put(str, 1); 
     } 
    } 

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

Dieser Code funktioniert gut für occurrences bekommen, aber beachten Sie, dass dieser Code die order zerstört. was ich will ist, dass die order auch nicht zerstört werden sollte.

+0

Wenn Sie Java 8 verwenden, kann Ihre if-else-Anweisung auf 'counts.merge (str, 1, Integer :: sum);' vereinfacht werden. –

Antwort

1

Verwenden LinkedHashMap anstelle von HashMap der Einsetzfolge

LinkedHashMap A ist eine Kombination von Hash-Tabelle und die verkettete Liste zu erhalten. Es hat eine vorhersagbare Iterationsreihenfolge (eine verkettete Liste), aber die Suchgeschwindigkeit ist die einer HashMap. Die Reihenfolge der Iterationen wird durch die Reihenfolge der Anzeigen festgelegt. Sie erhalten die Schlüssel/Werte in der Reihenfolge zurück, in der sie dieser Map hinzugefügt wurden.

+0

danke !! du hast meinen Tag gerettet!! es hat gut funktioniert –

Verwandte Themen