Array? ArrayList? Vektor? ...?

Djinndrache

Bekanntes Mitglied
Ich weiß nicht was ich nehmen soll.. Ich brauche folgendes..

Eine Ansammlung an Strings soll gespeichert werden und bei Bedarf ausgegeben. Bedarf besteht, wenn quasi ein Triggerelement/ein Key abgerufen wird.
Ich möchte quasi so eine Zuordnungstabelle haben:

Trigger1: Hier steht Text 1
Trigger2: Ein ganz anderer Text
Trigger3: Und noch mehr Text


Und nun kann der Benutzer eingeben "Trigger2" und dann soll er das Echo bekommen "ein ganz anderer Text".

Welche Technik benutz ich am besten, um diese Zuordnungen zu speichern? Soweit ich weiß kann man weder bei Arrays noch bei Arraylists oder Vektoren einen "Key" angeben, anhand dessen der Inhalt abgefragt wird...

Gibt es also eine bessere Möglichkeit als sich ein extra Array für Trigger und Inhalte anzulegen und dann mit for das Triggerarray zu durchlaufen?


edit: Die Anzahl Elemente, die ich habe, ist übrigens festgesetzt und kann statisch sein. (wie bei Arrays)
 
Zuletzt bearbeitet:
gibt es viele Optionen. Kommt drauf an was du willst:
- über einen selbst definierten key selektieren willst oder über einen index
- ob du vorher weisst, wieviele einträge reinkommen
- ob es eine natürliche Ordnung haben soll FiFo/LiFo oder garkeine
edit: gibt natürlich noch mehr fragen, die du dir da stellen kannst. z.b. spielt es auch eine rolle, ob du öfters in der mitte einen wert rauslöschen willst (wenn ja lieber LinkedList ansonsten ArrayList)

Beispiele:
Java:
		List<String> list = new ArrayList<String>();
		list.add( "hier steht Text" );
		list.add( "ein ganz anderer Text" );
		System.out.println( list.get( 0 ) ); //hier steht ein Text
		System.out.println( list.get( 1 ) ); //ein ganz anderer Test
		
		String[] array = new String[2];
		array[0] = "hier steht Text";
		array[1] = "ein ganz anderer Text";
		System.out.println( array[0] ); //hier steht ein Text
		System.out.println( array[1] ); //ein ganz anderer Test
		
		Map<String, String> map = new HashMap<String, String>();
		map.put( "Trigger1", "hier steht Text");
		map.put( "Trigger2", "ein ganz anderer Text");
		System.out.println( map.get( "Trigger1" ) ); //hier steht ein Text
		System.out.println( map.get( "Trigger2" ) ); //ein ganz anderer Test

gibt aber wie gesagt zig möglichkeiten

edit nr 2: http://www.inabrenner.de/pdf/SCJP.pdf "Kapitel 12 Das Collections-Framework": gibt dir einen schönen überblick. Wenn du das ganze kapitel durchliest leg keinen wert auf die fragen. sind SCJP ähnliche fragen. wenn dus nicht vor hast zu machen lass sie weg. wird dich nur entmutigen, weils sehr theoretisch ist. Aber ist wie gesagt, ganz schön zusammengefasst in dem buch

edit nr 3: Bei einer Key/Wert gegenüberstellung, wo der Key nicht einfach nur ein inkrementierender Index ist, kannste direkt zur Map greifen.
- muss es threadsafe sein, wenn ja HashTable
- darf es durcheinander sein, wenn ja HashMap
- muss es FiFo sein, wenn ja LinkedHashMap
 
Zuletzt bearbeitet:
Danke, werd ich bei Gelegenheit mal genauer lesen.

Ich möchte etwas für 121 vordefinierte Elemente, die weder mehr noch weniger werden. Auch ändern werden die sich zur Laufzeit niemals. Ich möchte einfach einen Key aufrufen und einen String bekommen, dem der Key zuzuordnen ist.

Kannst du mir da auf die schnelle etwas empfehlen?
 
Siehe oben edit 3 😉. Welcher typ ist der key? Reicht 1,2,3 oder eher ein String wie Trigger1, Trigger2 etc

edit die 10te und hoffentlich letzte für heute 😀: also wenn deine keys immer TriggerX heissen, nimm eine ArrayList oder ein stinknormales Array (ich würde zur Liste greifen aber Arrays sind für Anfänger imho besser geeignet)
 
Zuletzt bearbeitet:
hashtable nur wenn du threadest (ist synchronisiert). in allen anderen fällen bietet eine hashmap genau die gleiche funktionalität (sogar mehr -> erlaubt null) und ist afaik auch performanter (weiß es nicht aus erster quelle aber wäre meine schlussfolgerung)
 

Neue Themen


Zurück
Oben