ArrayList<Foo> in ein Foo[] konvertieren?

mrbela

Bekanntes Mitglied
Hey Leute!

Ich habe eine ArrayList<Foo> vorliegen und brauche davon ein Array vom Typ Foo, das natürlich die gleichen Elemente enthält, wie die ArrayList.

Ich könnte mir natürlich ne Methode bauen, die das für mich erledigt, wär nicht schwer, aber denoch suche ich nach built-in Funktionen, die das erledigen und habe bspw. die "toArray()"-Methode gefunden... Die spuckt aber leider nur ein Object[] aus, obwohl ich die ArrayList anfangs mit dem Typ Foo ausgeprägt habe... :/

Habt ihr irgendne Idee wie ich ans Ziel kommen kann?

Danke!
 

Mostly_Harmless

Aktives Mitglied
Es gibt noch eine toArray() Funktion:

Java:
List<String> list = new ArrayList<>();
String[] array = new String[list.size()];
array = list.toArray(array);
 

mrbela

Bekanntes Mitglied
Ahhh! Okay.. Danke! :)

Aber man kann ja schon sagen, dass die toArray() veraltet ist, oder? Was will man denn mit einem Object-Array noch anfangen... Außer man benutzt toSTrings oder ähnliches. ;)

Sind denn

Java:
List<String> list = new ArrayList<>();

und

Java:
List<String> list = new ArrayList<String>();

gleichwertig? Vermutlich wird zweiteres automatisch vom Compiler aus ersterem erstellt?!?

Danke
 
G

Gast2

Gast
Nein, die Methode ist nicht veraltet. Die ist überladen und kann auch ein T[] Array zurückgeben, was im Code von Mostly_Harmless ja auch gemacht wird.

Zu deiner zweiten Frage:
Code:
new ArrayList<>();
<- Das ist der Diamond Operator, den es seit Java 7 gibt. Im Prinzip sind die beiden Ausdrücke gleichwertig, nur dass der erste erst ab Java 7 funktioniert.
 

Mostly_Harmless

Aktives Mitglied
Aber man kann ja schon sagen, dass die toArray() veraltet ist, oder? Was will man denn mit einem Object-Array noch anfangen...

Die Methode stammt halt aus der Zeit, in der es noch keine generischen Typen in Java gab. Ob es heute noch sinnvolle Anwendungsfälle dafür gibt, weiß ich nicht.
Aber um noch einen Schritt weiterzugehen: Was will man denn mit einem Array überhaupt noch anfangen? Ich nutze nur noch Listen, damit ist man wesentlich flexibler und wenn hinter dem List-Interface eine ArrayList steckt, dann hat man im Grunde ein "besseres Array" ;)

Sind denn

Java:
List<String> list = new ArrayList<>();
und
Java:
List<String> list = new ArrayList<String>();

gleichwertig? Vermutlich wird zweiteres automatisch vom Compiler aus ersterem erstellt?!?

Genau, das nennt sich Diamond-Operator und ist ab Java 7 möglich.
 

mrbela

Bekanntes Mitglied
Was will man denn mit einem Array überhaupt noch anfangen

Mmmh, ich glaube, ich muss Arrays benutzen, da ich mit varargs arbeite.

Ich habe eine Methode

Java:
bla(Foo1 f1, Foo2 f2, Foo3... f3s)

Wenn ich diese aufrufe, dann muss ich doch als drittes Argument ein Array nehmen, bzw mehrere Objekte vom Typ f3:

Java:
Foo1 f1 = ...;
Foo2 f2 = ...;
Foo3 f3erstes = ...;
Foo3 f3zweites = ...;
bla(f1,f2,f3erstes, f3zweites)
.

Jetzt habe ich aber folgendes Problem (vielleicht gibts da ja auch noch ne elegantere Lösung!):

Ich habe eine Methode, die am besen so aussähe:

Java:
meineMethode(Foo1 f1 , Foo2... foo2s, Foo3... foo3s)

Die varargs gehen aber nicht zwei mal hintereinander, also muss ich auf

Java:
meineMethode(Foo1 f1, Objet... os)

ausweichen oder??

WEnn die frage geklärt ist poste ich den Rest des Problems ;)

edit: und dann auch, weshalb ich Arrays brauche.
 

Mostly_Harmless

Aktives Mitglied
Ich habe eine Methode, die am besen so aussähe:

Java:
meineMethode(Foo1 f1 , Foo2... foo2s, Foo3... foo3s)

Die varargs gehen aber nicht zwei mal hintereinander, also muss ich auf

Java:
meineMethode(Foo1 f1, Objet... os)

ausweichen oder??

Genau, die erste Version lässt sich nicht kompilieren, da es sein könnte, dass der Compiler die Grenze zwischen Foo2- und Foo3-Parametern nicht automatisch bestimmen kann.
Aber bevor du nun auf Object umsteigst und anschließend in der Methode anfängst die Typen zu überprüfen und zu casten:
Warum nicht
Java:
meineMethode(Foo1 f1, Foo2[] f2, Foo3[] f3)
oder so
Java:
meineMethode(Foo1 f1, List<Foo2> f2, List<Foo3> f3)
?
 

mrbela

Bekanntes Mitglied
Genau, die erste Version lässt sich nicht kompilieren, da es sein könnte, dass der Compiler die Grenze zwischen Foo2- und Foo3-Parametern nicht automatisch bestimmen kann.

Das verstehe ich nicht ganz... :/ Wäre nett, wenn Du es nochmal in andern Worten erklären könntest.

Aber bevor du nun auf Object umsteigst und anschließend in der Methode anfängst die Typen zu überprüfen und zu casten:
Warum nicht
Java:
meineMethode(Foo1 f1, Foo2[] f2, Foo3[] f3)
oder so
Java:
meineMethode(Foo1 f1, List<Foo2> f2, List<Foo3> f3)
?

Hast völlig recht!! Object und Casts sind eht hässlich. Da steig ich lieber auf eine Varianter von den zwei oben um.

Danke!
 

Mostly_Harmless

Aktives Mitglied
Das verstehe ich nicht ganz... :/ Wäre nett, wenn Du es nochmal in andern Worten erklären könntest.

Nehmen wir mal an, du hättest gerne eine Methode
Java:
void doSomething(Object... o, String... s)

Dann wäre ja Folgendes völlig legitim:
Java:
Object o1, o2, o3;
String s1, s2, s3;
doSomething(o1, o2, o3, s1, s2, s3);

Ein String ist aber auch ein Object. Zählt s1 hier zu Object oder zu String?
Hier könnte man noch argumentieren, dass die Grenze zwischen o3 und s1 liegt, da s1 als String deklariert wurde.

Was ist aber, wenn du jetzt z.B. zwei Interfaces A und B hast, sowie eine Klasse K, die beide Interfaces implementiert?
Java:
void doSomething(A... a, B... b) {
    // ...
}

void andereMethode() {
   K k1, k2, k3;
   doSomething(k1, k2, k3);
}

Wo ist hier die Grenze zwischen Objekten des Typs A und denen vom Typ B?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards doc to pdf Konvertieren... Allgemeine Java-Themen 43
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
J Java zu C# konvertieren? Allgemeine Java-Themen 4
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
RalleYTN float in WORD konvertieren Allgemeine Java-Themen 1
RalleYTN JOGL Texture in BufferedImage konvertieren Allgemeine Java-Themen 1
C String zu Int konvertieren Allgemeine Java-Themen 9
P List<Type> Konvertieren in List<List<Type>> Allgemeine Java-Themen 3
RalleYTN Audiodatein(.ogg/.wav) in Text konvertieren Allgemeine Java-Themen 0
M ArrayList mit verschiedenen Datentypen in String konvertieren Allgemeine Java-Themen 10
B .txt Datei in einen kompletten String konvertieren Allgemeine Java-Themen 20
C String in double[][] konvertieren! Allgemeine Java-Themen 5
R MS Word in PDF konvertieren Allgemeine Java-Themen 1
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
D Programm in JApplet konvertieren... Allgemeine Java-Themen 4
K Image zu BufferedImage konvertieren Allgemeine Java-Themen 9
J String mit "," in Double Wert konvertieren Allgemeine Java-Themen 7
H Input/Output Binäre Daten konvertieren, Output hat Zeilenumbrüche?? Allgemeine Java-Themen 9
S byte [] in string und zurück konvertieren Allgemeine Java-Themen 2
S Millisekunden in Zeitcode konvertieren. Unerwarteter Effekt..? Allgemeine Java-Themen 8
T JPG zu PNG konvertieren Allgemeine Java-Themen 3
P Tonspur aus Video extrahieren und konvertieren Allgemeine Java-Themen 2
R byte[] to String Konvertieren Allgemeine Java-Themen 14
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
S Zahl konvertieren [Internationalisierung l10n, l18n] Allgemeine Java-Themen 4
L hunderstel Sekunden in mm:ss:hshs konvertieren Allgemeine Java-Themen 4
T Interger in String konvertieren Erklärung benötigt Allgemeine Java-Themen 11
R Moeglichst viele Datumsstrings in Date Objekte konvertieren? Allgemeine Java-Themen 3
P PNG 32 Bit zu 16Bit konvertieren... Allgemeine Java-Themen 4
Daniel_L RegEx: UBB in HTML konvertieren, Problem Verschachtelung Allgemeine Java-Themen 3
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
2 MP3 in Wav konvertieren. Allgemeine Java-Themen 5
K Zeichensatz in UTF8 konvertieren Allgemeine Java-Themen 7
T Konvertieren zu gültigen Dateinamen Allgemeine Java-Themen 10
S List<Double> oder Double[] in double[] zu konvertieren Allgemeine Java-Themen 6
B numerisch in alpanumerisch konvertieren Allgemeine Java-Themen 3
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
F Unicode zu ASCII konvertieren Allgemeine Java-Themen 5
P Sämtliche Zeichensätze nach UTF-8 konvertieren Allgemeine Java-Themen 6
B String in Hex konvertieren: Problem Allgemeine Java-Themen 9
F Code konvertieren Allgemeine Java-Themen 4
G Array/String aus Request wieder in Array konvertieren Allgemeine Java-Themen 2
M Wave file ins Ogg Format konvertieren! Allgemeine Java-Themen 3
A DOC in TIFF konvertieren Allgemeine Java-Themen 2
P word zu pdf konvertieren Allgemeine Java-Themen 5
G Konvertieren: Wikipedia-Formatierung -> HTML Allgemeine Java-Themen 5
cowabunga1984 Library um TIF in PDF zu konvertieren Allgemeine Java-Themen 2
S int nach Ascii konvertieren Allgemeine Java-Themen 2
F Wav to mp3 konvertieren Allgemeine Java-Themen 3
G Datum konvertieren Allgemeine Java-Themen 14
R Fehler in WindowsXP oder Java? - double in int konvertieren Allgemeine Java-Themen 10
G Benutzereingaben konvertieren(Exponentialfunktion) Allgemeine Java-Themen 9
K Object nach Vector konvertieren Allgemeine Java-Themen 3
T Musikdateien in ein anderes Musikdateienformat konvertieren Allgemeine Java-Themen 5
T ArrayList in String[] konvertieren. Allgemeine Java-Themen 3
M Value als String in beliebige Klasse konvertieren Allgemeine Java-Themen 18
G Bild von RGB in Grayscale konvertieren Allgemeine Java-Themen 2
T Datum konvertieren Allgemeine Java-Themen 3
R HTML Seiten in formatierte Textseiten konvertieren Allgemeine Java-Themen 3
R StringWriter konvertieren in einen String !!! Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben