Ordnen Sie vier Traversierungsmethoden zu

Daten vorbereiten

HashMap<String, String> map = new HashMap<String,String>();
map.put("1","test1");
map.put("2","test2");
map.put("3","test3");

Traversierungsmethode 1: Es ist zu beachten, dass diese Methode nicht die beste Wahl ist und im Allgemeinen nicht empfohlen wird

System.out.println("通过map.keyset进行遍历key和value");
for (String key:map.keySet()){
    
    
	System.out.println("key= "+key+" and value= "+map.get(key));
}

Durchlaufmethode 2: Durch Durchlaufen des Karteneintragssatzes können Sie auch Schlüssel und Wert gleichzeitig abrufen. Im Allgemeinen ist die Leistung besser als bei Keyset. Dies ist auch die am häufigsten verwendete Durchlaufmethode, aber Iterator hat auch seine Vorteile: Verwenden von foreach Wenn Sie beim Durchlaufen der Karte ihre Größe ändern, wird ein Fehler gemeldet. Wenn Sie jedoch nur Elemente löschen, können Sie Elemente mit der Remove-Methode von Iterator löschen

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

Traversierungsmethode 3: Für die oben genannten können mehrere foreach durch Iterator ersetzt werden. Tatsächlich wird foreach nur in Java5 unterstützt, und die Schreibmethode von foreach sieht prägnanter aus

System.out.println("通过iterator遍历所有的value,但是不能遍历key");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
    
    
	Map.Entry<String, String> next = iterator.next();
	System.out.println("key="+next.getKey()+"value="+next.getValue());
}

Traversierungsmethode vier:

System.out.println("通过map.values()遍历所有的value,但是不能遍历key");
for (String v:map.values()){
    
    
	System.out.println("value="+v);
}

Schlussfolgerung 1:
Im Allgemeinen ist es am effizientesten, die EntrySet-Methode zum Durchlaufen zu verwenden, da die interne Speicherstruktur von hashMap auf dem Array von Entry basiert. Bei dieser Durchquerung muss sie nur einmal durchlaufen werden. Die zeitliche Komplexität bei der Verwendung anderer Methoden kann jedoch zunehmen. Beispielsweise muss die keySet-Methode jedes Mal den entsprechenden Hash über den Schlüsselwert berechnen und dann den entsprechenden Ergebniswert über den Hash erhalten, sodass die Effizienz gering ist.

Schlussfolgerung 2:
Wenn Sie nur den Schlüssel oder Wert erhalten möchten, wird empfohlen, keySet oder Werte zu verwenden.
Wenn Sie sowohl Schlüssel als auch Wert benötigen, wird empfohlen, enterSet zu verwenden.
Wenn Sie Elemente während des Durchlaufs löschen müssen, wird dies empfohlen Verwenden Sie Iterator
. Wenn Sie während der Durchquerung Elemente hinzufügen müssen, können Sie eine temporäre Karte erstellen. Die Karte speichert die neu hinzugefügten Elemente und fügt die temporäre Karte nach Abschluss der Durchquerung in die Originalkarte ein

Supongo que te gusta

Origin blog.csdn.net/qq_37131111/article/details/120176259
Recomendado
Clasificación