Kullanıyorsanız Java-8 bunu yapmanın başka bir yolu daha var.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Yaptığı şey:
Stream<Integer>
listeden a almak
- Bir elde
IntStream
kutusu açma, tek başına (bir kimlik fonksiyonu) her elemanın eşleyerek int
her birinin değeri tutma Integer
nesnesi (Java 5 itibaren otomatik olarak yapılır)
int
arayarak dizi almaktoArray
Ayrıca intValue
bir yöntem başvurusu aracılığıyla açıkça çağrı yapabilirsiniz , yani:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Listede NullPointerException
herhangi bir null
referansınız varsa , alabileceğinizi de belirtmek gerekir . Akış boru hattına aşağıdaki gibi bir filtreleme koşulu eklenerek bu kolayca önlenebilir:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Misal:
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]