Якщо ви використовуєте java-8 є й інший спосіб зробити це.
int[] arr = list.stream().mapToInt(i -> i).toArray();
Що це робить:
- отримання
Stream<Integer>списку
- отримання
IntStreamшляхом зіставлення кожного елемента до себе (функція ідентичності), розблокування вмісту intзначення кожного Integerоб'єкта (робиться автоматично з Java 5)
- отримання масиву
int, зателефонувавшиtoArray
Ви також можете явно зателефонувати intValueза допомогою посилання на метод, тобто:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
Варто також зазначити, що ви можете отримати ліцензію, NullPointerExceptionякщо у вас є будь-які nullпосилання в списку. Цього можна легко уникнути, додавши умову фільтрування до потокового трубопроводу таким чином:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
Приклад:
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]