Вступление:
В этой статье мы быстро узнаем, как преобразовать список Java (скажем, ArrayList ) в массив и наоборот. Если вы хотите узнать больше о ArrayList в целом, не стесняйтесь читать нашу статью о Java ArrayList.
А пока пойдем!
Преобразовать список Java в массив:
Преобразование списка Java в массив очень просто и понятно. Мы можем использовать один из двух доступных вариантов метода toArray () :
1
2
3
4
5
|
//Returns an Object-type array Object[] toArray() //Returns an array of type T T[] toArray(T[] array) |
Давайте попробуем их:
1
2
3
4
|
List<Integer> list = Arrays.asList( 1 , 2 , 3 , 4 ); Object[] arrayOfObjects = list.toArray(); Integer[] arrayOfIntegers = list.toArray( new Integer[list.size()]); |
Метод toArray (T [] array) принимает и возвращает массив. Основная цель передачи массива — сообщить тип массива, который должен быть возвращен:
- Если переданный массив имеет достаточно места, элементы сохраняются в одном массиве и возвращается ссылка на этот массив.
- Если в нем больше места, чем количество элементов, массив сначала заполняется элементами списка, а оставшиеся значения заполняются как ноль
- Или же, если у него недостаточно места для хранения элементов, создается, заполняется и возвращается новый массив того же типа и достаточного размера.
Преобразовать массив Java в список :
Чтобы преобразовать массив в список в Java, мы можем выбрать один из следующих подходов:
1. Наивный подход (итерация):
Один простой способ — перебрать все элементы массива и добавить их во вновь созданный список:
1
2
3
4
5
6
7
|
public <T> List<T> convertArrToList(T[] array) { List<T> list = new ArrayList<>(); for (T element : array) { list.add(element); } return list; } |
Мы можем использовать приведенный выше универсальный метод для простого преобразования массива типа T :
1
2
|
Integer[] arr = { 1 , 2 , 3 }; List<Integer> list = c.convertArrToList(arr); |
2. Arrays.asList ():
Мы также можем использовать метод asList () в классе java.util.Arrays для быстрого создания List:
1
2
3
|
public <T> List<T> convertArrToList(T[] array) { return Arrays.asList(array); } |
Этот метод принимает массив в качестве аргумента.
3. Collections.addAll ():
Как мы знаем, java.util.Collections предлагает метод addAll (Collection c, T… elements), который добавляет все элементы в данную коллекцию c .
Поскольку List наследуется от интерфейса Collection , мы можем использовать этот метод в наших интересах:
1
2
3
4
5
|
public <T> List<T> convertArrToList(T[] array) { List<T> list = new ArrayList<>(); Collections.addAll(list, array); return list; } |
4. Java 8 Streams:
Начиная с Java 8, мы можем сначала открыть поток через массив Java, а затем собрать его элементы в список с помощью сборщиков потоков Java :
1
2
3
|
public <T> List<T> convertArrToList(T[] array) { return Arrays.stream(array).collect(Collectors.toList()); } |
Для массива примитивов у нас будет что-то вроде:
1
2
3
4
|
int [] array = new int [] { 1 , 2 , 3 }; List<Integer> list = Arrays.stream(array) .boxed() .collect(Collectors.toList()); |
Вывод:
В этом уроке мы рассмотрели, как преобразовать список Java в массив. Мы также рассмотрели другой сценарий преобразования массива в список в Java.
Опубликовано на Java Code Geeks с разрешения Шубхры Шриваставы, партнера нашей программы JCG . Смотрите оригинальную статью здесь: http://www.programmergirl.com/convert-list-array-java/ Мнения, высказанные участниками Java Code Geeks, являются их собственными. |