2012-04-09 3 views
0

Ich habe ein paar Zeichenfolgen (etwa 100) und ich möchte sie in einer Datenstruktur speichern und später möchte ich es für eine bestimmte Zeichenfolge suchen, um zu überprüfen, ob es vorhanden ist oder nicht. Was DS in Java ist, wird in diesem Fall für schnelles Suchen am besten sein.Welcher DS wird verwendet, um eine Zeichenkette in Zeichenketten in Java zu suchen?

Der eigentliche Anwendungsfall ist, dass ich einen Katalog für Bücher erstellen möchte und herausfinden muss, ob ein bestimmter Titel vorhanden ist oder nicht.

Alle Saiten sind einzigartig. Ich möchte selbst keinen DS implementieren, aber jede der bereits in Java vorhandenen Sammlungen verwenden.

+0

Jede Wörterbuchdatenstruktur würde – Dan

Antwort

2

warum Sie keine Liste verwenden, um alle Strings zu speichern und enthält() Methode verwenden, um herauszufinden, ob es in Ihrem Liste oder nicht. Sie können Set verwenden, aber in diesem Fall müssen Ihre Strings eindeutig sein.

+0

tun Im Falle einer Liste und Millionen von Buchtiteln würde O (n) Zeit suchen, deshalb sind Baum- oder Hashtabellen geeignet. – Yavar

+0

@Yavar Er hat erwähnt, dass die Liste etwa 100 Länge ist. Deshalb habe ich über List vorgeschlagen. –

+0

oops, hmm absolut richtig dann. +1 :) – Yavar

1

Verwenden Sie eine Set Implementierung. Die contains Methode wird Ihnen sagen, ob eine bestimmte String Titel vorhanden ist oder nicht

3

Die offensichtliche Wahl wäre, eine Implementierung der Set Schnittstelle zu verwenden. Dies macht eine bequeme contains-Methode verfügbar, mit der Sie testen können, ob ein bestimmter Titel existiert. Sie können auch eine Implementierung einer Map verwenden, z. B. HashMap, um eine Zeichenfolge mit einem Objekt zu verknüpfen. Auf diese Weise können Sie Informationen zu Ihrem Buch speichern und einfach darauf zugreifen.

Der Vorteil der Verwendung eines Sets oder einer Karte besteht darin, dass die Suche nach einem bestimmten Schlüssel sehr effektiv ist. Du kannst keine doppelten Objekte in einem Set haben.

Verwandte Themen