2016-06-13 3 views
0

Ich muss eine App machen, die ein Telefonbuch in Java simulieren würde, mit Hash-Karte (n). Ich möchte 2 Methoden für die Suche implementieren (geben Sie einen Namen ein, um eine Nummer zu erhalten und geben Sie eine Zahl ein, um einen Namen zu erhalten).Telefonbuch mit Hashmap-Implementierung in Java

Gibt es eine Möglichkeit, beide Methoden mit nur 1 Hash-Map wie diese HashMap<Person, Number> pb = new HashMap<>(); (wo Person und Anzahl sind Klassen) arbeiten? Keine

+0

Dies sollte ziemlich möglich sein. –

+1

Sie könnten, aber Sie müssten jeden Wert durchlaufen, um eine Zahl zu finden. Nur eine Beobachtung: Zahlen sind garantiert einzigartig. Namen sind nicht. Es macht mehr Sinn, dass die Zahl der Schlüssel ist. –

Antwort

2

Sie benötigen 2 Maps in diesem Fall Map<Person, Number> und Map<Number, Person>, wenn Sie mit nur einer Karte einen schnellen Zugriff auf Ihre Daten haben wollen, müßten Sie über die Werte zu durchlaufen, was natürlich viel langsamer.

Sie auch von einem BiMap von Google Guave zu tun, beide mit einer Karte

A bimap (oder „bidirektionale Karte“) ist eine Karte, die bewahrt die Einzigartigkeit ihrer Werte sowie das verwenden können seine Schlüssel. Diese Einschränkung ermöglicht bimaps eine „inverse Ansicht“ zu unterstützen, die eine andere bimap ist die gleichen Einträge wie dieser bimap, jedoch mit umgekehrten Schlüssel und Werte