Wenn Sie Folgendes verwenden java-8 Es gibt auch eine andere Möglichkeit, dies zu tun.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Was sie tut, ist:
- bekommen eine
Stream<Integer>
aus der Liste
- Erlangung eines
IntStream
indem jedes Element auf sich selbst abgebildet wird (Identitätsfunktion), das Unboxing der int
Wert, der von jedem Integer
Objekt (erfolgt seit Java 5 automatisch)
- das Array von
int
durch den Aufruf toArray
Sie könnten auch explizit aufrufen intValue
über eine Methodenreferenz, d.h:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Es ist auch erwähnenswert, dass Sie eine NullPointerException
wenn Sie eine null
Referenz in der Liste. Dies könnte leicht vermieden werden, indem man der Stream-Pipeline eine Filterbedingung wie die folgende hinzufügt:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Exemple :
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]