Java Datentypen - Hashtable vs Array vs Vector ?

Hallo

das mit dem Java Programmieren ist ja eine wirklich harte Nuss:wink:
Ich muss in meinem Programm Werte(Strings) gegen andere Werte (Strings) in einem String austauschen, sprich klassisches Ersetzen von Textkürzeln durch Textbausteine (in einem Text).

1.Hashtable funktioniert nicht, weil ich sowohl auf den Key =„ANREDE“ (Kürzel) als auch den Value=„Sehr geehrte Damen und Herren“ (Ersetzungstext) Zugriff brauche und diese als String! auslesen muss. Das Problem, an den Key komme ich aber nur als Zahl und nicht als String ran.

  1. Array (2-dimensional) funktioniet nicht, da ich es nicht dynamisch zur Laufzeit in der Größe andern kann. (Dies ist eien Bedingung, dass man weitere Textkürzel und Ersetzungstexte zur Laufzeit hinzufügen kann)

Die obigen Varianten habe ich programmiert, bin dann aber gescheitert aufgrund der entsprechenden Probleme:wink:

  1. Vector ist ja nur eine Liste, würde das Sinn machen?
  2. Oder sollte man sich dafür irgend ein neus Objekt erzeugen und ??

Meine Frage ist nun, wer hat sowas ähnliches schonmal gemacht, bzw. hat da einfach ein Paar Anregungen wie man so ein Problem einfach und elegant lösen kann. Als Anfänger ist das für mich irgendwie sehr schwer eine Lösung zu finden.

Vielen Dank
Julian

1.Hashtable funktioniert nicht, weil ich sowohl auf den Key
=„ANREDE“ (Kürzel) als auch den Value=„Sehr geehrte Damen und
Herren“ (Ersetzungstext) Zugriff brauche und diese als String!
auslesen muss. Das Problem, an den Key komme ich aber nur als
Zahl und nicht als String ran.

Genau die würde ich nehmen (funktioniert doch :smile: )

Hastable hash = new Hashtable();
hash.put(„ANREDE“,„Sehr geehrter…“);
hash.put(„ADRESSE1“,„Firma von und zu“);

nun hast du einen Text und willst die Ersetzung

String zuErsetzen = „ANREDE“;

String ziel = hash.get(zuErsetzen).toString();
oder einfacher
String ziel = „“+hash.get(zuErsetzen);

Das schöne an der Hashtable:
2. Brief
hash.put(„ADRESSE1“,„Andere Firma“);

überschreibt den alten Eintrag ADRESSE1 (Keys in Hashtable immer eindeutg).

Einziges Problem:

hash.get(„ANREDDDE“); //Schreibfehler
liefert null

Also am besten eine kleine Hilfsfunktion bauen die den Nullwert abfängt und durch Leerstring ersetzt.

Michael

Hallo Julian,

Also wenn es um ersetzen von Text mit Text geht dann würde ich Dir Reguläre Ausdrücke (insofern du Java 1.4 verwendest) empfehlen.

Kennt man ja von andern Programmiersprachen.

Viele Grüsse
Simon

Wieso kommst du an die Keys an einer Hashtable nur als Zahl ran? Das sind einfach Objects… also kansnte da Strings reinspeichern

Hashtable lookupTable = new Hashtable();
lookupTable.put(„ANREDE“, „Sehr geehrte…“);
String anrede = (String)lookupTable.get(„ANREDE“);

Grüße
Bruno

Huch nicht gesehen dass schon jemand geantwortet hat in der Zwischenzeit

String ziel = hash.get(zuErsetzen).toString();

Ein Cast nach String ist hier besser (und meiner Meinung nach auch sauberer, auch wenn das von dir für Strings funktionieren sollte) sonst läufst du evtl. in eine NullPointerException rein, wie du schon selbst geschrieben hast.

Grüße
Bruno

Danke :wink:
Hallo,

vielen Dank, hat funktioniert!

Viele Grüße
Julian