Ich bin neu in Java. Wie kann ich eine List<Integer>
à int[]
in Java?
Ich bin verwirrt, weil List.toArray()
gibt tatsächlich eine Object[]
, die weder auf Integer[]
noch int[]
.
Im Moment verwende ich dazu eine Schleife:
int[] toIntArray(List<Integer> list) {
int[] ret = new int[list.size()];
for(int i = 0; i < ret.length; i++)
ret[i] = list.get(i);
return ret;
}
Gibt es einen besseren Weg, dies zu tun?
Dies ist vergleichbar mit der Frage <em><a href="https://stackoverflow.com/questions/880581/java-convert-int-to-integer">Wie kann ich int[] in Integer[] in Java konvertieren? </a></em>.
11 Stimmen
Sie können nur in Integer[] casten, indem Sie:
Integer[] arr = (Integer[])list.toArray(new Integer[list.size]);
0 Stimmen
@ripper234, eddie's Lösung ist schlechter als die auf die Frage. eigentlich die ursprüngliche ist technisch die beste, solange die Liste ist RandomAccess impl (auch es wird ordnungsgemäß entrollt und die Bounds Check für Array entfernt werden)
1 Stimmen
@Hardcoded sollten Sie Ihren Kommentar bearbeiten, um die Methode list.size() zu verwenden und den unnötigen Cast wegzulassen.
0 Stimmen
@sactiw Wie soll ich das machen? Dieser Kommentar wurde vor 3 Jahren geschrieben und Sie können Ihre Kommentare nur in den ersten 5 Minuten bearbeiten.
2 Stimmen
Gibt es eine bessere Möglichkeit, dies jetzt in Java 8 zu tun?
2 Stimmen
(@Makoto : siehe Pshemo's Antwort )
7 Stimmen
Int[] arr = listOfIntegers.stream().mapToInt(x->x).toArray();
0 Stimmen
@Pshemo hat eine tolle Antwort mit einer wunderbaren Erklärung gegeben!