Eingabe von Arrays in eine Hashmap
Ich fühle mich wie das ist eine sehr einfache Frage, aber ich konnte nicht finden eine Antwort.
Können Sie die Eingabe ein array-Objekt die put-Methode eine HashMap?
Beispiel:
Sagen, Sie haben eine HashMap:
HashMap<Integer, String> map = new HashMap <Integer, String>();
Haben Sie ein Integer-array und ein array von strings bequem gegeben. Die arrays nicht initialisiert werden, wie unten dargestellt, enthalten aber unbekannten Werten (das ist einfach einfacher zur Veranschaulichung des Ergebnisses).
int[] keys = {1, 3, 5, 7, 9};
String[] values = {"turtles", "are", "better", "than", "llamas"};
Will ich die Schlüssel-Wert-Paare der HashMap werden:
1, turtles
3, are
5, better
7, than
9, llamas
Kann dies erreicht werden mit so etwas wie map.put(keys, values)
? Ich weiß, das nicht funktioniert, sollten Sie eine Fehlermeldung erhalten, wie "Die Methode put(Integer, String) in das Feld HashMap ist nicht anwendbar für die Argumente (int[], String[])". Ich will einfach nur etwas mehr effizient, elegant oder kompakt als:
for (int i=0; i < keys.length; i++) {
map.put(keys[i],values[i]);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann mir nicht vorstellen, dass
könnte wesentlich effizienter gestaltet werden. Wenn es die Art von Sache, die Sie gehen zu oft tun, dann würde ich vielleicht schreiben ein Hilfsobjekt um
Map
.Beachten Sie, dass Karte.putAll() besteht, wenn die Werte, die Sie hinzufügen möchten, sind bereits in einer Karte.
Meiner Meinung nach haben Sie schon entdeckt, ein ziemlich straight-forward Ansatz für dieses problem.
Wenn Sie brauchen, dieses Verhalten dann brauchen Sie Sie nicht zu analysieren, jede und jedes element Sie in die HashMap. Die worst-case Komplexität O(n) und Sie können nicht verringern. Sie berühren musst, um alle Elemente zu füllen HashMap
Folgenden code (Wie von dir erwähnte) ist der einzige work-around
Es gibt keinen anderen Weg, um direkt die arrays in Map. Sie benötigen zu Durchlaufen, die jedes element von array und einfügen eines Schlüssel-Wert-paar in einer Karte.
Gibt es nicht außer der guten alten
for
, aber Sie können immer umsetzen Ihrer eigenen Lösung. Für einen wirklich ausführlichen Ansatz:könnte man etwas tun, wie
Schafft es aber Objekte, die nur im Interesse der Lesbarkeit 😛 Nicht die performatic Lösung, aber es ist cool zu Lesen 🙂
Sowieso lieber die guten alten
for
. Ich mag zu erstellen diese Art von Konstrukten, nur zum Spaß, es ist nicht beabsichtigt zu sein verwendet in der Produktion code, wie es macht eine Menge von Zyklen nur zu vermeiden, ein wenig imperativem code 🙂