Wenn Sie verwenden Java-8 Es gibt auch einen anderen Weg, dies zu tun.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Was es tut ist:
- ein
Stream<Integer>
von der Liste bekommen
- Erhalten eines
IntStream
durch Zuordnen jedes Elements zu sich selbst (Identitätsfunktion), Entpacken des int
von jedem Integer
Objekt gehaltenen Werts (automatisch seit Java 5 durchgeführt)
- Abrufen des Arrays
int
durch AufrufentoArray
Sie können auch explizit intValue
über eine Methodenreferenz aufrufen , dh:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Es ist auch erwähnenswert, dass Sie eine erhalten könnten, NullPointerException
wenn Sie eine null
Referenz in der Liste haben. Dies könnte leicht vermieden werden, indem der Stream-Pipeline eine Filterbedingung wie folgt hinzugefügt wird:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Beispiel:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]