Как перевести список в массив
Как преобразовать List в Array и наоборот в Java
В этой статье рассмотрим, как преобразовать List в массив и наоборот: как преобразовать массив в List.
Преобразование List в Array
Допустим, у нас есть список, и надо его преобразовать в массив. Как это сделать? Возьмем для примера список строк:
Мы хотим преобразовать его в массив:
Сделаем это без сторонних библиотек средствами JDK. Начнем с 11 версии, дальше покажу способы на 8 версии, и потом метод с Generics.
Способ № 1 (JDK 11)
Итак, с 11 версии список в массив можно преобразовать вот так изящно:
Способ № 2 (JDK 8)
В 8 версии можно сделать так (внимание, в скобках параметром указываем тип массива, а иначе результирующий массив будет типа Object[]):
Заметьте, что в аргументе можно указать массив нулевой длины, главное, что есть тип. В этом случае будет создан и вернется новый массив нужной длины. Если же список помещается, то вернется тот, что в аргументе.
Способ № 3 с использованием stream() (JDK 8)
Метод для Generics
Допустим, надо написать общий метод для любого типа данных:
Проверим, что он работает. Создадим класс:
Преобразование Array в List
Теперь допустим у нас есть массив строк:
Массив в List преобразуется так:
Но полученный массив — фиксированного размера, в него нельзя добавлять и удалять элементы. Менять же элементы внутри можно, при этом изменения отразятся на массиве. И наоборот.
Чтобы получить обычный List, можно создать новый List на основе предыдущего:
Исходный код
Код примеров доступен на GitHub (в тестах).
Примеры преобразования списка в массив на Java
Хотя список является более мощным, чем массив в Java, в некоторых случаях мы хотим преобразовать первое в структуру данных последнего. Например, если есть существующий API, где ожидаемым параметром является массив, а у вас есть список.
Если вы оказались в таких ситуациях, вот несколько способов, которые могут помочь преобразовать список в массив на Java.
Преобразовать список в массив с помощью toArray()
Самый простой способ преобразовать список в массив – это использовать встроенный метод toList(). Вот код:
Этот метод не имеет аргумента и возвращает Object Array. Он создаёт новый массив, содержащий все элементы списка. Пример:
Как показано, toArray() возвращает массив объектов. myArray будет иметь 3 элемента – это то же самое, что и исходный список. Следовательно, ниже ожидаемый результат:
Apple
Banana
Orange
Обратите внимание, что тип возвращаемого значения – строго объектный массив. Если мы попытаемся привести результат к другому типу массива (например, массив строк), будет сгенерировано исключение.
И ниже результат, когда код выше выполняется. ClassCastException выдает во время выполнения.
Exception in thread «main» java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at Test.main(Test.java:10)
toArray() должен возвращать «безопасный» массив – это означает, что List не будет ссылаться на элементы возвращаемого массива. Другими словами, если вы измените массив, список не будет затронут. Рассмотрим пример ниже:
Изменение в результате (myArray) не повлияет на исходный список (myList). Следовательно, выходные данные кода будут отображать исходное содержимое списка, как показано ниже:
Apple
Banana
Orange
Конвертировать список в массив с помощью toArray (T [] a)
Если мы хотим, чтобы результат toArray возвращал определенный тип массива (например, массив строк), мы можем передать, какой тип он должен вернуть. Вот синтаксис:
T[] toArray(T[] a)
JavaDoc говорит, что параметр – это «массив, в котором должны храниться элементы этого списка, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа».
Код передает массив String длиной 0. Поскольку элементы не помещаются, создается новый массив Array и возвращается вызывающей стороне.
В качестве альтернативы, мы можем передать массив, достаточно большой, чтобы содержать элементы списка. Вот пример:
Нам даже не нужно присваивать возврат метода toArray переменной. Содержимое хранится в параметре. myArray в этом случае получит значения List. И если мы запустим его, будет отображено следующее:
Apple
Banana
Orange
Подводный камень, который следует учитывать, заключается в том, что мы не можем автоматически преобразовать список определенного типа в массив другого типа с помощью метода toArray. Вот пример кода:
Приведенный выше код создаст исключение ArrayStoreException. Потому что он не может преобразовать список строк в массив целых чисел.
Используем пользовательский код
Можно использовать нашу собственную логику. Этот способ имеет некоторые преимущества. Вот простой пользовательский код для преобразования списка строк в массив строк Java.
В итоге, получаем результат:
Apple
Banana
Orange
Одним из преимуществ использования пользовательского кода является то, что у нас может быть дополнительная логика, не включенная в готовые вспомогательные классы.
Например, если мы хотим преобразовать исходные элементы списка в элементы конечного массива. Вот простой пример:
Как показано, оригинальный список содержит названия фруктов. Результат содержит фразы, которые используют фрукты. Вывод:
This is Apple
This is Banana
This is Orange
Переделать список строк в целочисленный массив
Вот еще один пример пользовательского кода, в котором мы переделаем список строк в массив целых чисел.
Результат показан ниже:
100
200
300
В двойной массив
Аналогично, здесь приведен пример пользовательского кода, который преобразует List of String в массив значений Double.
С использованием потоков в Java 8
Поток Java 8 предлагает очень крутые способы преобразования объектов.
Средняя оценка / 5. Количество голосов:
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Как преобразовать список на номерного массива?
Чтобы преобразовать список Python в NUMPY ARMPY, используйте любой из следующих двух методов: функция NP.Array (), которая предпринимает и возвращает массив NAMPY, создающий новую структуру данных в памяти. принимает намерение в качестве аргумента и преобразует его в массив. Разница в np.array () – это то, что … Как преобразовать список на номерного массива? Читать далее “
Чтобы преобразовать список Python в Numpy Array, используйте один из следующих двух способов:
Numpy vs python списки
Тип данных встроенного списка Python является мощным. Однако Numpy Array имеет много преимуществ по спискам Python. Кто они такие?
| Многомерное нарезка | Не зависит от библиотеки |
| Функциональность вещания | Интуитивно понятный |
| Скорость обработки | Менее сложный |
| След памяти | Гетерогенные данные списка разрешены |
| Много удобных методов | Произвольная форма данных (не квадратная матрица) |
Чтобы узнать больше о преимуществах Numpy Array через список Python, прочитайте мой подробный учебник по блогу.
Как преобразовать список 1D Python в Numpy Array?
Проблема : Учитывая одномерный список Python. Как преобразовать его в Numpy Array?
Пример : У вас есть следующий 1d Python список целых чисел.
Вы хотите преобразовать его в Numpy Array.
Метод 1: NP.array (…)
Самый простой способ преобразовать список Python в Numpy Array – использовать np.array () Функция, которая предпринимает и возвращает Numpy Array.
Это создает новую структуру данных в памяти. Изменения в исходном списке не видны переменной, которая содержит Numpy Array:
Элемент 999 который сейчас является частью списка lst не является частью массива А Отказ
Способ 2: np.asarray (…)
Альтернатива – использовать np.asarray () Функция, которая принимает один аргумент – итабельный – и преобразует его в Numpy Array. Разница в np.array () Это то, что он не создает новую копию в памяти, если вы передаете небольшой массив. Все изменения, сделанные на оригинальном массиве, отражены на Numpy Array! Так что будь осторожен.
Массив B создается с помощью np.asarray () Функция, так что если вы измените значение массива А изменение будет отражено на переменной B (потому что они указывают на тот же объект в памяти).
[Видео] Как преобразовать список списков в Numpy Array?
Конвертировать список списков на 2D Array
Пример : Преобразовать следующий список списков
Решение : Используйте np.array (список) Функция для преобразования списка списков в двумерный массив Numpy. Вот код:
Попробуйте сами : Вот тот же код в нашем интерпретатере интерактивного кода:
Подсказка : Numpy метод np.array () принимает счетчик в качестве ввода и преобразует его в Numpy Array.
Преобразовать список списков с разным количеством элементов
Проблема : Учитывая Список списков Отказ Внутренние списки имеют различное количество элементов. Как преобразовать их в Numpy Array?
Пример : Скажем, у вас есть следующий список списков:
Каковы различные подходы для преобразования этого списка списков в Numpy Array?
Решение : Есть три разных стратегиях, которые вы можете использовать. ( Источник )
(1) Используйте стандарт np.array () функция.
Это создает Numpy Array с тремя элементами – каждый элемент – это тип списка. Вы можете проверить тип вывода, используя встроенный Тип () Функция:
(2) Сделайте массив массивов.
Это более логично, чем предыдущая версия, потому что она создает Numpy Array 1D Numpy Armays (а не 1D списков Python).
(3) Сделайте списки равными по длине.
Вы используете Понимание списка на «подушку» Нет Значения каждому внутреннему списку с меньшей максимальной длины.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Преобразование массива в список в Java
как преобразовать массив в список на Java?
я использовал Arrays.asList() но поведение (и подпись) как-то изменилось с Java SE 1.4.2 (документы теперь в архиве) к 8 и большинство фрагментов, которые я нашел в интернете, используют поведение 1.4.2.
во многих случаях это должно быть легко обнаружить, но иногда она может проскользнуть незамеченной:
17 ответов
это работает, как ожидалось.
проблема в том, что varargs был представлен в Java5 и, к сожалению, Arrays.asList() перегружен версией vararg. Так что Arrays.asList(spam) понимается компилятором Java5 как параметр vararg массивов int.
эта проблема объясняется более подробно в эффективном Java 2nd Ed. Глава 7, Пункт 42.
но тогда, если вы делаете что-то вроде этого:
в Java 8 вы можете использовать streams:
Java 8 (int array)
Java 8 и ниже (целочисленный массив)
нужен ArrayList, а не список?
в случае, если мы хотим конкретную реализацию List например ArrayList затем мы можем использовать toCollection as:
почему list21 не может быть структурно модифицированных?
для ясности list21 может быть изменен в том смысле, что мы можем вызвать list21.set(index,element) но этот список не может быть структурно изменен, т. е. не может добавлять или удалять элементы из списка. Вы также можете проверить это вопрос.
если мы хотим неизменяемый список, то мы можем обернуть его как:
еще один момент, чтобы отметить, что метод Collections.unmodifiableList возвращает неизменяемое представление указанного списка. Немодифицируемая коллекция представлений-это немодифицируемая коллекция, а также представление резервной коллекции. Заметить что изменения в резервной коллекции все еще могут быть возможны, и если они происходят, они видны через немодифицируемое представление.
у нас может быть действительно неизменяемый список в Java 10.
Java 10 (действительно неизменяемый список) двумя способами:
также проверьте это ответ шахты для более.
недавно мне пришлось преобразовать массив в список. Позже программа отфильтровала список, пытаясь удалить данные. При использовании массивов.функция asList(array), вы создаете коллекцию фиксированного размера: вы не можете ни добавлять, ни удалять. Эта запись объясняет проблему лучше, чем я: почему я получаю исключение UnsupportedOperationException при попытке удалить элемент из списка?.
в конце концов, мне пришлось сделать «ручное» преобразование:
I предположим, я мог бы добавить преобразование из массива в список, используя список.операция addAll (items).
Использование Массивов
использование ArrayList или других реализаций списка
можно использовать for цикл для добавления всех элементов массива в List реализации, например, ArrayList :
использование Stream API в Java 8
вы можно превратить массив в поток, а затем собрать поток с помощью разных коллекторов: коллектор по умолчанию в Java 8 использует ArrayList за экраном, но вы также можете наложить предпочтительную реализацию.
если вы нацелены на Java 8( или более поздней версии), вы можете попробовать следующее:
другой обходной путь, если вы используете Apache commons-lang:
Как преобразовать массив Java в ArrayList
В этом уроке мы рассмотрим множество примеров того, как преобразовать массив Java в список массивов, указав на лучшие методы.
Вступление
В этом уроке мы преобразуем массив в более универсальный Список массивов на Java.
Массивы просты и обеспечивают базовую функциональность группировки совокупности объектов или примитивных типов данных. Однако массивы также ограничены – их размер фиксирован, и даже базовые операции, такие как добавление новых элементов в начале или перестановка элементов, могут усложниться.
К счастью, Платформа Collections познакомила нас со многими очень полезными реализациями Списка s, Набора s и Очереди s.
Массивы.asList()
Давайте начнем с простейшей формы преобразования. Вспомогательный класс Массивы содержит множество полезных методов. Метод asList() возвращает содержимое массива в Списке :
новый список массивов<>(Arrays.asList())
Это связано с тем, что метод asList() поддерживается исходным массивом.
новый ArrayList<>(Список ())
Начиная с Java 9, вы можете пропустить инициализацию самого массива и передачу его в конструктор. Вы можете использовать List.of() и передавать отдельные элементы:
Коллекции.addAll()
Он очень универсален и может использоваться со многими ароматами коллекции/vararg. Мы используем ArrayList и массив:
Коллекционеры.тоЛист()
Если вы работаете с потоками, а не с обычными коллекциями, вы можете собрать элементы потока и упаковать их в список с помощью ToList() :
Выполнение этого приведет к:
Коллекционеры.Коллекция()
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Это также приводит к:
Списки.newArrayList()
Аналогично Arrays.asList() вспомогательному классу и методу, проект Google Guava познакомил нас с Списками вспомогательным классом. Вспомогательный класс Lists предоставляет метод newArrayList() :
Однако, поскольку Java 7 устранила необходимость явно задавать тип в операторе diamond, это устарело.
Вывод
Существует множество способов преобразования массива в ArrayList в Java. Они простираются от вызова вспомогательных методов до потоковой передачи массива и сбора элементов.
