casting: ArrayList to String[]

Status
Nicht offen für weitere Antworten.

ulr!ch

Bekanntes Mitglied
Hi Java-Gemeinde,

Was mache ich falsch? Ich habe eine ArrayList namens arraylist und ein String-Array namens abc:
Wie kann ich die objects aus der ArrayList in ein String-Array casten?

Code:
String[] abc = arraylist.toArray(new (String[0]));

Dank vorab!
Ulrich
 
Code:
    String [] abc = (String[])arrayList.toArray(new String[arrayList.size()]);


Ein new String[0] = nie gut, merk dir das!
 
ulrich.schroeders hat gesagt.:
Code:
String[] abc = arraylist.toArray(new (String[0]));

Was bezweckst du mit "new (String[0])" ?

Prinzipiell gilt für Arrays (unabhängig von deinem Prob), wenn du auf einzelne Elemente eines Arrays zugreifen willst:

Code:
String[] deinArray = {"hallo","dies","ist","ein","array"};
...
deinArray[0] = ..... //zugriff auf das erste Element

Seit Java 5 geht das hier: Schau dir das mal an:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html#toArray(T[])

Hab leider noch kein Tiger installiert, sonst würd ich es selber noch schnell testen 😉

edit: zu langsam
 
@mic_checker: Die Funktion toArray(T[] gibts eigentlich auch schon in 1.4.2 nur das es da nicht Template heißt sondern noch Object[] 😉
 
Hi Java-Gemeinde,

danke für die Tipps, das hat schön funktioniert.
Ich habe mich nun doch entschieden, alles über ArrayList abzuwickeln, wenn das hin- und herkonvertieren nicht so schwer ist. 🙂
Nun an die Spezialisten eine weitere Frage:
Wie kann ich am Besten mit einer Zeile ein Item der ArrayList mit dem StringTokenizer zerlegen?
Code:
	  StringTokenizer st = new StringTokenizer((String[i])arrayList.toArray(new String[arrayList.size()]), "x");
Das sieht doch recht seltsam aus. :bahnhof:

Dank vorab,
Ulrich
 
Ich würde es nicht mit einer Zeile machen.

Mach es doch so das du erst das von the_29 verwendest ums in dein String Array umzuwandeln.

Danach kannst du ja per Indize auf das Array zugreifen und dementsprechend StringTokenizer anwenden.

Wenn du in ein paar Wochen dein Prog wieder liest wirst du nämlich eine so lange Zeile nachher nicht mehr stehen....

@the_29: Achso...danke! 😉
 
Hi Java-Gemeinde,

schon zwei Zeilen - funktioniert auch. 😀
Gibt es die Möglichkeit, so etwas wie eine ArrayList ()() zu schaffen?
Wird durch die Methode:
Code:
java.util.Collections.shuffle(arraylist);
der innere Verbund aufgelöst?
Wenn's also geht, dann ungefähr so, oder?
Code:
      ArrayList arraylist = new ArrayList()();
	    arraylist.add("Hauptstadt von Frankreich", "Paris");
	    arraylist.add("Hauptstadt von Togo", "Lomé");
	    arraylist.add("Hauptstadt von Aserbaidjan", "Baku");
Geht das irgendwie, dass die dazugehörige Lösung erhalten bleibt?

Danke schon mal vorab,
Ulrich
 
1. glaube ich du meinste einen Array von einer ArrayList oder was meinst du??

Ein arraylist mit 2 Items ??

Wenn ja, mach ne private class die 2 Strings hat und füg die hinzu

Code:
//deine Haupklasse
private void tmpFkt()
{
  ArrayList ar = new ArrayList();
  ar.add(new Node("Hauptstadt von Frankreich","Paris");
  ar.add(new Node("Hauptstadt von Österreich","Wien");
  ar.add(new Node("Hier kann irgendetwas","stehen");
  //...


  for(int x = 0; x != ar.size(); x++)
    System.out.println(ar.get(x)); //sollte wahrscheinlich sogar das richtige ausgeben ;)
}

private class Node
{
   String msg_1 = null;
   String msg_2 = null;
   
    public Node(String msg1,String msg2)
    {
     this.msg_1 = msg1;
     this.msg_2 = msg2;
    }

    public String toString()
    { 
       return this.msg_1 + " "  + this.msg_2;
    }
}
}
 
Nur der Vollständigkeit halber:
Code:
// Schließende Klammer fehlt
ar.add(new Node("Hauptstadt von Frankreich","Paris")); 
ar.add(new Node("Hauptstadt von Österreich","Wien"));
ar.add(new Node("Hier kann irgendetwas","stehen"));
 
Hi sky80 und thE_29;

mir ist gerade noch was anderes eingefallen (über StringTokenizer):
Code:
arraylist.add("Hauptstadt von Frankreich | Paris");
Lösung steht nach dem Querstrich. Die Arraylist wird am Anfang ausgelesen und in zwei seperate String-Arrays geschrieben, die dieselben Laufzeitparameter haben.

Danke noch einmal an alle für die kompetente Hilfe.
Bis zur nächsten Frage oder Antwort,
Ulrich
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben