verbunden hashmap Suche nach Schlüssel-Wert?
In einer verknüpften hashmap
Gibt es irgendwelche Methoden, um den Wert von K, indem nur die Bereitstellung V?
Ich habe alle über das internet gesucht und bisher habe ich nur Schleifen an den Schlüssel zu kommen.
- Ich denke, Sie haben keine andere Möglichkeit, außer die for-Schleife
- stackoverflow.com/questions/1383797/... Hat die Antworten, die Sie suchen.
- Wert nicht einzigartig...es gibt also eine Möglichkeit, um mehrere Schlüssel für den gleichen Wert.....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht.
Den Punkt einer Landkarte zu verknüpfen, die V mit einem bestimmten K, nicht die andere Weise herum. Würden Sie haben zu gehen durch alle K/V-paar, Linear (den loop).
Ist dies etwas, das wäre eine gemeinsame operation, würden Sie wollen, erstellen Sie eine zweite Karte, ging die andere Möglichkeit (und wahrscheinlich wickeln Sie beide in einer Klasse abstrahiert, die entfernt). Natürlich ist das knifflige bit ist, wenn Sie reden nicht über eindeutige Werte.
Einer Karte wird bestimmt nicht so genutzt werden, siehe @Brian Roach 's Antwort. Sie sollten erwägen, den Austausch, die Karte durch etwas anderes oder berücksichtigen Sie dabei, seine Schlüssel /Werte.
Sowieso, finden Sie die entsprechenden Tasten, um valueToFind haben auf diese Weise:
Da gibt es gar nichts, dass ist besser als eine Schleife mit einer Vanille
LinkedHashMap
, aber hier sind einige alternativen mit Guave...Wenn Sie wissen, Ihre Werte sind einzigartig, die
BiMap
API unterstützt umgekehrten lookups effizient, ohne dass ein rückwärts-anzeigen von hand ein. VerwendenHashBiMap
wie Ihre Umsetzung, und Sie können sich einen Schlüssel von einem Wert, der mitbimap.inverse().get(value)
.Wenn Ihre Werte nicht einzigartig, Sie könnte möglicherweise bauen eine
Multimap
ordnet jeden Wert, der in jeder seiner zugeordneten Schlüssel. Man könnte dies schnell zu tun, mitdenen lassen würde Sie suchen, bis Sie alle Schlüssel einem Wert zugeordnet sind, mithilfe
reverse.get(value)
.