Hi , ich habe nach einiger Zeit mal wieder ein Problem
Ich habe einen Array in den Elemente eingefügt habe . Diesen Array habe ich in eine Hashtable gepackt . Mit einem dazugehörigen Key .
Dies mache ich immer wieder so das am Ende viele Key - Value paare in der Hashtable liegen.
Nun möchte ich über den dazugehörigen Key den Array aus der Hashtable holen und in einen String umwandeln. Die Methode zum umwandeln von Array in String habe ich schon.
Den String möchte ich dann ausgeben .
Wenn ich über Hashtable.get () mir ein Object hole wie kann ich es dann in einen String umwandeln und ausgeben??
Damit wir hier nicht von einer Ominösen Methode Reden , hier mal der Code:
Java:
publicstaticStringarrayToString(String[]InputArray){String result ="";String separator =" , ";if(InputArray.length >0){
result =InputArray[0];for(int i=1; i<InputArray.length; i++){
result = result + separator +InputArray[i];}}return result;}
Natürlich habe ich
System.out.println(arrayToString(HashtableTravel.get(Reise)));
bereits probiert. Nur leider gibt er mir darauf hin die Daten des TextFeldes aus , welches im Array gespeichert ist. Ich möchte aber gerne den Text(inhalt haben). Deswegen meine Frage!
publicvoid newTravel (StringTravelName){StringName=getTextField().getString();StringDatum=getTextField1().getString();StringTyp=("");if(choiceGroup.getSelectedIndex()==1){Typ=("Geschäflich");}else{Typ=("Privat");}TravelLog[0]=Name;//Strings werden in Strinng Array gepacktTravelLog[1]=Datum;TravelLog[2]=Typ;HashtableTravel.put(TravelName,TravelLog);// Array wird mit dazugehörigem Key gespeichert.}
Java:
publicvoid getTravel (StringTravelName){String text =newString(HashtableTravel.get(TravelName).toString());//Array wird aus der Hashtable Geholt und in einen String umgewandeltSystem.out.println (text);//String wird ausgegeben}
String text = new String (HashtableTravel.get(TravelName).toString()); erzeugt den string mit dem hash, den du nicht haben willst. Object.toString() liefert dir in dem fall nämlich nicht den inhalt der string-variable, sondern identifiziert das objekt anhand eines strings mit typenbezeichnung und hashcode, bspw. [Ljava.lang.String;@e5125d64
in deinem fall wäre wohl folgendes korrekt:
String text = (String)HashtableTravel.get(TravelName);
das ist der inhalt von HashtableTravel.get(TravelName), den du haben willst
Mhh ,
bei String[] array = HashtableTravel.get(TravelName);
wird ein String Array verlangt , es wird aber ein Object aus der Hashtable geliefert.
Keine Ahnung warum ich packe ja schließlich ein String Array rein.
Wenn du Eclipse benutzt, müsste der dir eine Warnung (gelb) Anzeigen. Nämlich sowas wie "Hashtable is a raw type and should be parametrized".
Wenn du einfach nur ein Hashtable erstellst, kann da jedes Objekt rein, ganz egal von welcher Klasse es kommt, da ja jede Klasse, die du oder irgendwer anders schreibt automatisch vom Typ Object ist.
Da du nichts anderes angegeben hast, nimmt deine Hashtable nun die String Arrays und parkt sie als Object.
Das sagt Java, dass die Keys deiner Hashtable Integer sind und die dazugehörigen Werte String[].
Danach kannst du aber auch nur noch Integer/String[] Paare dort ablegen.
Alternativ den String[]-Cast von SlaterB nutzen (ist das ein Cast?)
Edit: Sehe gerade, du nutzt <String, String>. Das sollte eigentlich auch gehen.
Ok , ok steinigt mich das ich das ich die Ressource von einem String verschwendet habe
Komischer weise wird es so auch in Büchern gelehrt.
Aber gut ich mach es ja schon weg.