Iteration über eine HashMap, zwei Möglichkeiten: die Iteration mit dem Eintrag set & Iteration mit Aufzählung
Sind HashMaps soll Durchlaufen werden, die in diesen beiden Möglichkeiten, oder ist die Aufzählung als falsch? Ich machte einen einfachen iterator-Programm mit zwei iterator-Funktionen:
import java.util.*;
public class HashMapIterators
{
public static void main(String[] args)
{
HashMap<String, Integer> hMap = new HashMap<String, Integer>();
hMap.put("abc", 10);
hMap.put("pqr", 20);
hMap.put("asd", 30);
hMap.put("xyz", 40);
iteratorEnumeration(hMap);
iteratorEntrySet(hMap);
}
public static void iteratorEnumeration(HashMap hMap)
{
System.out.println("iteratorEnumeration");
Iterator it = hMap.keySet().iterator();
Enumeration em = hMap.elements(); //doesn't work
Enumeration em = new IteratorEnumeration(it); //doesn't work
// while(em.hasMoreElements())
{
}
}
public static void iteratorEntrySet(HashMap hMap)
{
System.out.println("iteratorEntrySet");
Iterator it = hMap.entrySet().iterator();
while(it.hasNext())
{
Map.Entry me = (Map.Entry)it.next();
System.out.println("Key: [" + me.getKey() + "], Value: [" + me.getValue() + "]");
}
}
}
Den iteratorEnumeration-Funktion funktioniert nicht, ich denke, dass diese Methoden (wie Elemente()) ist anwendbar auf HashTable ist nur. Korrigieren Sie mich, wenn ich falsch bin, ich weiß nicht, Wann ist es angebracht, zu verwenden, was Funktion. Also, meine wichtigste Frage ist - sollten wir iterieren über eine HashMap, indem ein iterator über die Methode entrySet (bitte siehe mein iteratorEntrySet-Funktion), ist dies der einzig richtige Weg, es zu tun?
InformationsquelleAutor MdT | 2013-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
erste von Generika, lernen 'em &love 'em
zweite keySet hat auch eine
iterator()
Methode iteriert über alle Schlüssel (dieEnumeration
- Klasse ist veraltet)Ich finde die
entrySet
besser, wenn ich auch brauchen, der Wert auf jedem Schlüssel so kann ich vermeiden, die Kosten für die Suche (die je nach Karte gehen kannO(n)
)die iteration code kommt:
wenn ich nur den Schlüssel werde ich das keySet zu vermeiden, die extra aufblasen von
Map.entry<keyClass,ValueClass>
im für TypInformationsquelleAutor ratchet freak
Der einfachste Weg, dies zu tun wäre, um die neue Erweitert
- Schleife (Foreach), zusammen mit der Generika-wie so:
InformationsquelleAutor MrLore
Ist die Art, wie Sie interagieren mit der Karte? Wenn ja, könnten Sie Sie mit falschen Daten-Struktur.
Keiner Weise, das problem mit Ihrem iteratorEnumeration Methode ist, sobald du den key, iterator, sollten Sie Durchlaufen, immer den Wert von der Karte zu jeder Zeit. Sie brauchen nicht zu nennen
hMap.elements();
InformationsquelleAutor hvgotcodes