Wie erstellt man ein Wörterbuch in Java? [geschlossen]

236

Ich versuche ein Wörterbuch zu implementieren (wie im physischen Buch). Ich habe eine Liste von Wörtern und deren Bedeutung.

Welche Datenstruktur / welchen Datentyp bietet Java, um eine Liste von Wörtern und deren Bedeutung als Schlüssel / Wert-Paare zu speichern?

Wie kann ich mit einem Schlüssel den Wert finden und zurückgeben?

user1849819
quelle
24
Nun, um mich auf die Frage zu konzentrieren, nicht auf den Benutzer, stimme ich für die Wiedereröffnung. Ich bin mir sicher, dass dieser Benutzer den Kurs sowieso schon beendet hat. ;) Es ist ein Duplikat von stackoverflow.com/questions/1540673/… , aber ich denke, die Antworten hier sind besser.
Adi Inbar

Antworten:

313

Du wirst eine wollen Map<String, String>. Zu den Klassen, die die MapSchnittstelle implementieren , gehören (ohne darauf beschränkt zu sein):

Jedes ist für bestimmte Situationen konzipiert / optimiert (weitere Informationen finden Sie in den entsprechenden Dokumenten). HashMapist wahrscheinlich die häufigste; die Standardeinstellung.

Zum Beispiel (mit a HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
Tierart
arshajii
quelle
1
@ Cruncher Es implementiert auch Map(überprüfen Sie die Javadoc)
Arshajii
1
@arshajii Ich habe Zweifel, dass wir alle Zeichenfolgen im Wörterbuch manuell zuordnen oder ich kann sagen, dass wir die Bedeutung aller Wörter manuell speichern. Meine Frage ist also, gibt es eine Möglichkeit wie db (dump) -Dateien des Wörterbuchs, um die Wörter und ihre Bedeutung / Definition abzurufen, damit wir vermeiden können, die Bedeutung jedes Wortes manuell
hinzuzufügen
@VighaneshGursale Sie müssen eine Put-Methode verwenden, um Ihre Datenstruktur während der Ausführung zu erstellen. Stellen Sie sich einen Befehl put vor, bei dem Sie die Datei von der Disc lesen und im Speicher (RAM) ablegen, damit Sie damit arbeiten können. Wenn Sie eine Datei haben, die Sie als Datenstruktur beim automatischen Laden laden möchten, müssen Sie sich mit Java Spring befassen, aber es ist komplex.
Dan Ciborowski - MSFT
5
Übrigens müssen Sie <String, String> beim zweiten Mal nicht einfügen. Sie können einfach tunMap<String, String> map = new HashMap<>();
Samuel Noyes
Sie haben vergessen, ConcurrentHashMap zu erwähnen, die besser als Hashtable zu verwenden ist
Arsenius
80

Dadurch wird ein Textwörterbuch (Zeichenfolge) erstellt:

Map<String, String> dictionary = new HashMap<String, String>();

Sie verwenden es dann als:

dictionary.put("key", "value");
String value = dictionary.get("key");

Funktioniert, gibt aber einen Fehler aus. Sie müssen die Konstruktorklasse mit der Deklarationsklasse identisch halten. Ich weiß, dass es von der übergeordneten Klasse erbt, aber leider gibt es einen Fehler zur Laufzeit.

Map<String, String> dictionary = new Map<String, String>();

Das funktioniert richtig.

SmartK8
quelle
3
dictionary["key"]wird nicht funktionieren - es sollte sein dictionary.get("key").
Arshajii
21
Stimmt, wahrscheinlich ist etwas C #
reingeschlüpft
12

Verwenden Sie die Map-Schnittstelle und eine Implementierung wie HashMap

Puyover
quelle
1
Ein Link zu einer Lösung ist willkommen, aber stellen Sie sicher, dass Ihre Antwort ohne sie nützlich ist: Fügen Sie dem Link einen Kontext hinzu, damit Ihre Mitbenutzer eine Vorstellung davon haben, was es ist und warum es dort ist, und zitieren Sie dann den relevantesten Teil der Seite, die Sie verwenden. erneutes Verknüpfen mit, falls die Zielseite nicht verfügbar ist. Antworten, die kaum mehr als ein Link sind, können gelöscht werden.
FelixSFD