Статьи

Java преобразовать список в массив и наоборот

Вступление:

В этой статье мы быстро узнаем, как преобразовать список 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, являются их собственными.