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

от admin

Преобразование массива в список в 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 &lt;&gt; (Arrays.asList ()) (Самый популярный и используемый подход) * new ArrayList &lt;&gt; (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. Они охватывают от вызова вспомогательных методов до потоковой передачи массива и сбора элементов.

Похожие статьи