Преобразование массива в список в Java
В этом посте будет обсуждаться, как преобразовать массив в список, используя простые коллекции Java, Guava и Apache Commons.
В Java есть две реализации списков общего назначения: ArrayList а также LinkedList . Этот пост будет использовать ArrayList , который предлагает постоянный позиционный доступ и просто быстрый.
1. Наивное решение
Наивное решение состоит в том, чтобы создать пустой список и поместить в него каждый элемент указанного массива.
Способы преобразования массива в список в Kotlin
В этом кратком руководстве мы рассмотрим способы, как преобразовать массив в список в Kotlin.
Для простоты мы будем использовать утверждения в модульных тестах для проверки результата преобразования.
Введение
Когда мы ежедневно работаем с Kotlin, мы должны предпочесть списки массивам. Поэтому мы можем захотеть преобразовать массив в список.
Обычно мы предпочитаем получить новый объект List, содержащий тот же элемент с тем же порядком в массиве. Однако, в зависимости от требований, мы можем захотеть добавить все элементы данного массива в существующий объект списка.
В этом руководстве мы представим несколько подходов для этих двух сценариев.
В качестве примера возьмем объект Array<String>:
Если преобразование будет проведено успешно, мы должны получить объект List, равный этому:
Далее, давайте посмотрим, как сделать преобразования.
Использование Java метода Arrays.asList
Класс Arrays стандартной библиотеки Java предоставил метод asList для преобразования Array в List. В Kotlin мы, безусловно, можем использовать этот метод для преобразования.
Затем давайте создадим метод модульного тестирования, чтобы увидеть, выполняет ли он работу:
Если мы запустим тест, он пройдет успешно. Стоит отметить, что метод Arrays.asList возвращает изменяемый список.
Метод Array.toList
Помимо использования стандартного метода Java Arrays.asList для преобразования, в Kotlin мы также можем использовать предопределенную функцию расширения Array.toList(), чтобы легко преобразовать объект Array в List:
В отличие от метода Arrays.asList в Java, метод toList() в Kotlin возвращает неизменяемый список. Если нам нужен изменяемый список, мы можем вызвать другую функцию расширения: Array.toMutableList.
Использование функции listOf
Функция Kotlin listOf очень удобна, когда нам нужно инициализировать неизменяемый объект List.
Функция listOf принимает элементы vararg в качестве параметра. В Kotlin оператор распространения ( * ) может разложить экземпляр массива на vararg. Затем давайте создадим тестовый метод, используя функцию listOf для преобразования данного массива в список:
В качестве примечания: если нам нужен изменяемый список, мы можем вместо этого вызвать mutableListOf.
Использование метода Array.toCollection
Kotlin предоставил еще одну функцию расширения для класса Array: Array.toCollection. Эта функция требует объект MutableCollection в качестве параметра и добавляет все элементы в заданном массиве в коллекцию.
Если мы хотим преобразовать массив в новый mutableList, мы можем просто передать в функцию пустой объект MutableList, например, ArrayList:
Конечно, эта функция подходит лучше, если мы хотим добавить элементы из этого массива в существующий MutableList:
Наконец, мы должны отметить, что объект, возвращаемый функцией toCollection, — это тот же самый объект, который мы ей передаем. Таким образом, возвращаемый список является изменяемым.
Средняя оценка 0 / 5. Количество голосов: 0
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Converting array to list in Java
I used the Arrays.asList() but the behavior (and signature) somehow changed from Java SE 1.4.2 (docs now in archive) to 8 and most snippets I found on the web use the 1.4.2 behaviour.
- on 1.4.2 returns a list containing the elements 1, 2, 3
- on 1.5.0+ returns a list containing the array ‘numbers’
In many cases it should be easy to detect, but sometimes it can slip unnoticed:
24 Answers 24
In your example, it is because you can’t have a List of a primitive type. In other words, List<int> is not possible.
You can, however, have a List<Integer> using the Integer class that wraps the int primitive. Convert your array to a List with the Arrays.asList utility method.
In Java 8, you can use streams:
We cannot have List<int> as int is a primitive type so we can only have List<Integer> .
Java 16
Java 16 introduces a new method on Stream API called toList() . This handy method returns an unmodifiable List containing the stream elements. So, trying to add a new element to the list will simply lead to UnsupportedOperationException .
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Как преобразовать массив Java в ArrayList
Введение В этом руководстве мы конвертируем массив в более универсальный ArrayList в Java. * Arrays.asList () * new ArrayList <> (Arrays.asList ()) (Самый популярный и используемый подход) * new ArrayList <> (List.of ()) * Collections.addAll () * Collectors.toList () * Collectors.toCollection () * Lists.newArrayList () Массивы просты и обеспечивают базовую функциональность группирования вместе коллекции объектов или примитивных типов данных. Однако и массивы ограничены — их размер фиксированный.
Время чтения: 3 мин.
Вступление
В этом руководстве мы конвертируем массив в более универсальный ArrayList в Java.
Массивы просты и обеспечивают базовую функциональность по группированию коллекции объектов или примитивных типов данных. Однако массивы также ограничены — их размер фиксирован, и даже основные операции, такие как добавление новых элементов в начале или перестановка элементов, могут быть сложными.
К счастью, Collections Framework познакомила нас со многими очень полезными реализациями List , Set и Queue .
Одним из них является ArrayList , действительно универсальная и популярная реализация List .
ArrayList примет любую Collection . Мы можем проявить творческий подход к типу коллекции, которую передаем в нее.
Arrays.asList ()
Начнем с простейшей формы преобразования. У Arrays есть много полезных методов. Метод asList() возвращает содержимое массива в List :
Это приведет к List реализации ( ArrayList ) , который будет населен emp1 , emp2 и emp3 . Выполнение этого кода приводит к:
новый ArrayList <> (Arrays.asList ())
Лучшим подходом, чем просто присвоение возвращаемого значения вспомогательного метода, является передача возвращаемого значения в new ArrayList<>() . Это стандартный подход, используемый большинством людей.
Это потому, что метод asList() поддерживается исходным массивом.
Если вы измените исходный массив , список также изменится. Кроме того, asList() возвращает фиксированный размер, поскольку он поддерживается фиксированным массивом. Операции, которые расширяют или сокращают список, возвращают UnsupportedOperationException .
Чтобы избежать этого, мы применим функции ArrayList , передав возвращаемое значение asList() конструктору:
новый ArrayList <> (List.of ())
Начиная с Java 9, вы можете пропустить инициализацию самого массива и передать его конструктору. Вы можете использовать List.of() и передавать отдельные элементы:
Collections.addAll ()
Класс Collections предлагает множество полезных вспомогательных методов, среди которых есть метод addAll() . Он принимает Collection и набор elements и объединяет их.
Он очень универсален и может использоваться со многими ароматами коллекции / vararg. Мы используем ArrayList и массив:
Collectors.toList ()
Если вы работаете с потоками, а не с обычными коллекциями, вы можете собрать элементы потока и упаковать их в список с помощью toList() :
Выполнение этого даст:
Collectors.toCollection ()
Точно так же вы можете использовать метод toCollection() для сбора потоков в разные коллекции. В нашем случае мы предоставим в него ссылку ArrayList::new , хотя вы также можете указать другие ссылки:
Это также приводит к:
Lists.newArrayList ()
Подобно вспомогательному классу и методу Arrays.asList() , проект Google Guava познакомил нас с вспомогательным классом Lists Вспомогательный класс Lists newArrayList() :
Теперь ключевым выводом этого подхода было то, что вам не нужно указывать тип при инициализации ArrayList . Это было действительно полезно, когда у вас был список <Element <Element, Element>> .
Однако, поскольку Java 7 устранила необходимость явно указывать тип в операторе ромба, это стало устаревшим.
Заключение
Существует множество способов преобразовать массив в ArrayList в Java. Они охватывают от вызова вспомогательных методов до потоковой передачи массива и сбора элементов.