HashMap in Java drucken

Lesezeit: 4 Minuten

HashMap in Java drucken
Unbekannter Benutzer

Ich habe ein HashMap:

private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();

Nun möchte ich alle Werte durchgehen und ausdrucken.

Ich habe das geschrieben:

for (TypeValue name : this.example.keySet()) {
    System.out.println(name);
}

Es scheint nicht zu funktionieren.

Was ist das Problem?

EDIT: Eine andere Frage: Ist diese Sammlung nullbasiert? Ich meine, wenn es 1 Schlüssel und Wert hat, wird die Größe 0 oder 1 sein?

  • Ich empfehle Ihnen, sich mit der Java-Dokumentation vertraut zu machen (sie beantwortet viele Ihrer Fragen). Dies ist zum Beispiel die Dokumentation für Map‘S size() Methode: “Gibt die Anzahl der Schlüssel-Wert-Zuordnungen in dieser Karte zurück. Wenn die Karte mehr als . enthält Integer.MAX_VALUE Elemente, Renditen Integer.MAX_VALUE.”

    – Adam Paynter

    7. Mai ’11 um 9:18

  • Ihr Code sucht nach Werten in Schlüsseln – was nicht korrekt ist. Suchen Sie entweder nach dem Schlüssel in den Schlüsseln oder nach dem Wert in den Werten

    – d-leben

    7. Mai ’11 um 9:52

  • Wenn es 1 Schlüssel / Wert hat, hat es natürlich die Größe 1. Aber das hat nichts mit nullbasierter Indizierung zu tun.

    – Jesper

    7. Mai ’11 um 11:59

  • Dies ist eine gute Frage. Aber es gibt hier eine Antwort, die dies in einer Zeile tun kann, wenn Sie die Lösung von Mingfei sehen.

    – HoldOffHunger

    4. Juni ’17 um 22:47

1641673418 903 HashMap in Java drucken
Ken Chan

keySet() nur einen Satz von Schlüsseln aus Ihrer Hash-Map zurückgibt, sollten Sie diesen Schlüsselsatz iterieren und den Wert aus der Hash-Map mit diesen Schlüsseln abrufen.

In Ihrem Beispiel ist der Typ des Schlüssels der Hash-Map TypeKey, aber du hast angegeben TypeValue in deinem generischen for-loop, kann also nicht kompiliert werden. Sie sollten es ändern in:

for (TypeKey name: example.keySet()) {
    String key = name.toString();
    String value = example.get(name).toString();
    System.out.println(key + " " + value);
}

Update für Java8:

example.entrySet().forEach(entry -> {
    System.out.println(entry.getKey() + " " + entry.getValue());
});

Wenn Sie keinen Schlüsselwert ausgeben müssen und nur den Hashmap-Wert benötigen, können Sie die Vorschläge anderer verwenden.

Eine andere Frage: Ist diese Sammlung nullbasiert? Ich meine, wenn es 1 Schlüssel und Wert hat, wird es dann 0 oder 1 sein?

Die Sammlung ist zurückgekommen von keySet() ist ein Set. Sie können den Wert nicht mit einem Index aus einer Menge abrufen, daher ist es nicht die Frage, ob er nullbasiert oder einsbasiert ist. Wenn Ihre Hash-Map einen Schlüssel hat, ist der keySet() zurückgegeben wird einen Eintrag enthalten und seine Größe ist 1.

  • Oder noch besser: for (Map.Entry<String, String> entry : map.entrySet()) { ... }

    – Adam Paynter

    7. Mai ’11 um 9:15


  • Oder noch kompakter: example.forEach((key, value) -> System.out.println("key + " | " + value));

    – Younes El Ouarti

    21. April ’20 bei 6:47

  • Was ist “Eintrag”, ist das ein Verweis auf etwas oder ein Befehlswort?

    – Al Grant

    21. Juni ’21 um 19:44

1641673418 269 HashMap in Java drucken
Mingfei

Eine einfache Möglichkeit, die Schlüssel-Wert-Paare anzuzeigen:

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(Arrays.asList(map)); // method 1
System.out.println(Collections.singletonList(map)); // method 2

Sowohl Methode 1 als auch Methode 2 geben dies aus:

[{b=2, a=1}]

  • Gehen Sie einfach wie folgt vor: System.out.println(map);, Ausgang: {b=2, a=1}

    – Mingfei

    20. Okt. 17 um 1:25 Uhr


  • Ja… noch eine ähnliche Ausgabe: System.out.println(map.toString());

    – Yo Apps

    23. Januar ’19 um 13:56 Uhr

  • @yoapps hüte dich in diesem Fall vor NPE. Deshalb vermeide ich die .toString wenn möglich.

    – Maroun

    3. August ’19 um 8:38

  • Das stimmt. die NPE lauert immer in solchen Abkürzungen. Ich wollte nur eine ähnliche Ausgabe zeigen. Ich denke, vor allem, wenn Sie ein Protokoll / eine Konsole debuggen und nur einen Blick in eine Karte werfen möchten, deren Daten Sie wissen, dass sie nicht null sind. Das ist ein schnelles Feuer! Aber wenn der Code von Grund auf überprüft wird … dann haben Sie Recht, er ist knifflig und sollte in einem guten Programmierkontext vermieden werden!

    – Yo Apps

    6. August ’19 um 8:13


Angenommen, Sie haben eine Map<KeyType, ValueType>, können Sie es wie folgt ausdrucken:

for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    System.out.println(entry.getKey()+" : "+entry.getValue());
}

1641673418 541 HashMap in Java drucken
Venkatesh

Um sowohl den Schlüssel als auch den Wert zu drucken, verwenden Sie Folgendes:

for (Object objectName : example.keySet()) {
   System.out.println(objectName);
   System.out.println(example.get(objectName));
 }

HashMap in Java drucken
Bozho

Sie haben mehrere Möglichkeiten

1641673418 194 HashMap in Java drucken
KayV

Für mich hat diese einfache Zeile gut funktioniert:

Arrays.toString(map.entrySet().toArray())

HashMap in Java drucken
davmac

Sie möchten den Wertesatz, nicht den Schlüsselsatz:

for (TypeValue name: this.example.values()) {
        System.out.println(name);
}

Der Code, den Sie angeben, würde nicht einmal kompiliert, was in zukünftigen Fragen erwähnenswert sein könnte – “scheint nicht zu funktionieren” ist ein bisschen vage!

.

189240cookie-checkHashMap in Java drucken

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy