- Rukovodstvo
- статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
- Как преобразовать массив Java в ArrayList
- Введение В этом руководстве мы конвертируем массив в более универсальный ArrayList в Java. * Arrays.asList () * new ArrayList <> (Arrays.asList ()) (Самый популярный и используемый подход) * new ArrayList <> (List.of ()) * Collections.addAll () * Collectors.toList () * Collectors.toCollection () * Lists.newArrayList () Массивы просты и обеспечивают базовую функциональность группирования вместе коллекции объектов или примитивных типов данных. Однако и массивы ограничены — их размер фиксированный.
- Вступление
- Arrays.asList ()
- новый ArrayList <> (Arrays.asList ())
- новый ArrayList <> (List.of ())
- Collections.addAll ()
- Collectors.toList ()
- Collectors.toCollection ()
- Lists.newArrayList ()
- Заключение
- Java Array of ArrayList, ArrayList of Array
- Java Array of ArrayList
- Java ArrayList of Array
- Java ArrayList of Object Array
- Списочный массив ArrayList
- Добавление элемента в массив ArrayList, метод add
- Замена элемента массива ArrayList, метод set
- Удаление элемента массива ArrayList, метод remove
- Определение позиции элемента ArrayList, метод indexOf
- Проверка наличие элемента в ArrayList, метод contains
- Создание массива из элементов ArrayList, метод toArray
- Интерфейс List
- Преобразование массива в список, Arrays
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Как преобразовать массив Java в ArrayList
Введение В этом руководстве мы конвертируем массив в более универсальный ArrayList в Java. * Arrays.asList () * new ArrayList <> (Arrays.asList ()) (Самый популярный и используемый подход) * new ArrayList <> (List.of ()) * Collections.addAll () * Collectors.toList () * Collectors.toCollection () * Lists.newArrayList () Массивы просты и обеспечивают базовую функциональность группирования вместе коллекции объектов или примитивных типов данных. Однако и массивы ограничены — их размер фиксированный.
Вступление
В этом руководстве мы конвертируем массив в более универсальный ArrayList в Java.
- Arrays.asList ()
- новый ArrayList <> (Arrays.asList ()) (Самый популярный и используемый подход)
- новый ArrayList <> (List.of ())
- Collections.addAll ()
- Collectors.toList ()
- Collectors.toCollection ()
- Lists.newArrayList ()
Массивы просты и обеспечивают базовую функциональность по группированию коллекции объектов или примитивных типов данных. Однако массивы также ограничены — их размер фиксирован, и даже основные операции, такие как добавление новых элементов в начале или перестановка элементов, могут быть сложными.
К счастью, Collections Framework познакомила нас со многими очень полезными реализациями List , Set и Queue .
Одним из них является ArrayList , действительно универсальная и популярная реализация List .
ArrayList примет любую Collection . Мы можем проявить творческий подход к типу коллекции, которую передаем в нее.
Arrays.asList ()
Начнем с простейшей формы преобразования. У Arrays есть много полезных методов. Метод asList() возвращает содержимое массива в List :
Employee emp1 = new Employee("John"); Employee emp2 = new Employee("Sarah"); Employee emp3 = new Employee("Lily"); Employee[] array = new Employee[]; List list = Arrays.asList(array); System.out.println(list);
Это приведет к List реализации ( ArrayList ) , который будет населен emp1 , emp2 и emp3 . Выполнение этого кода приводит к:
[Employee, Employee, Employee]
новый ArrayList <> (Arrays.asList ())
Лучшим подходом, чем просто присвоение возвращаемого значения вспомогательного метода, является передача возвращаемого значения в new ArrayList<>() . Это стандартный подход, используемый большинством людей.
Это потому, что метод asList() поддерживается исходным массивом.
Если вы измените исходный массив , список также изменится. Кроме того, asList() возвращает фиксированный размер, поскольку он поддерживается фиксированным массивом. Операции, которые расширяют или сокращают список, возвращают UnsupportedOperationException .
Чтобы избежать этого, мы применим функции ArrayList , передав возвращаемое значение asList() конструктору:
Employee[] array = new Employee[]; List list = new ArrayList<>(Arrays.asList(array)); System.out.println(list);
[Employee, Employee, Employee]
новый ArrayList <> (List.of ())
Начиная с Java 9, вы можете пропустить инициализацию самого массива и передать его конструктору. Вы можете использовать List.of() и передавать отдельные элементы:
List list = new ArrayList<>(List.of(emp1, emp2, emp3)); System.out.println(list);
[Employee, Employee, Employee]
Collections.addAll ()
Класс Collections предлагает множество полезных вспомогательных методов, среди которых есть метод addAll() . Он принимает Collection и набор elements и объединяет их.
Он очень универсален и может использоваться со многими ароматами коллекции / vararg. Мы используем ArrayList и массив:
Employee[] array = new Employee[]; List list = new ArrayList<>(); Collections.addAll(list, array); System.out.println(list);
[Employee, Employee, Employee]
Collectors.toList ()
Если вы работаете с потоками, а не с обычными коллекциями, вы можете собрать элементы потока и упаковать их в список с помощью toList() :
Employee[] array = new Employee[]; List list = Stream.of(array).collect(Collectors.toList()); System.out.println(list);
[Employee, Employee, Employee]
Collectors.toCollection ()
Точно так же вы можете использовать метод toCollection() для сбора потоков в разные коллекции. В нашем случае мы предоставим в него ссылку ArrayList::new , хотя вы также можете указать другие ссылки:
Employee[] array = new Employee[]; List list = Stream.of(array) .collect(Collectors.toCollection(ArrayList::new)); System.out.println(list);
[Employee, Employee, Employee]
Lists.newArrayList ()
Подобно вспомогательному классу и методу Arrays.asList() , проект Google Guava познакомил нас с вспомогательным классом Lists Вспомогательный класс Lists newArrayList() :
Employee[] array = new Employee[]; List list = Lists.newArrayList(array);
Теперь ключевым выводом этого подхода было то, что вам не нужно указывать тип при инициализации ArrayList . Это было действительно полезно, когда у вас был список > .
Однако, поскольку Java 7 устранила необходимость явно указывать тип в операторе ромба, это стало устаревшим.
Заключение
Существует множество способов преобразовать массив в ArrayList в Java. Они охватывают от вызова вспомогательных методов до потоковой передачи массива и сбора элементов.
Licensed under CC BY-NC-SA 4.0
Java Array of ArrayList, ArrayList of Array
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
Today we will learn how to create a Java array of ArrayList. We will also learn how to create an ArrayList of array elements.
Java Array of ArrayList
Creating array of list in java is not complex. Below is a simple program showing java Array of ArrayList example.
import java.util.ArrayList; import java.util.List; public class JavaArrayOfArrayList < public static void main(String[] args) < Listl1 = new ArrayList<>(); l1.add("1"); l1.add("2"); List l2 = new ArrayList<>(); l2.add("3"); l2.add("4"); l2.add("5"); List[] arrayOfList = new List[2]; arrayOfList[0] = l1; arrayOfList[1] = l2; for (int i = 0; i < arrayOfList.length; i++) < Listl = arrayOfList[i]; System.out.println(l); > > >
Notice that we can’t use generics while creating the array because java doesn’t support generic array. So if we try to use below code, it will produce compile time error as “Cannot create a generic array of List
List[] arrayOfList = new List[2];
Java ArrayList of Array
We can also create an array whose elements are a list. Below is a simple example showing how to create a list of array elements in java.
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class JavaArrayListOfStringArray < public static void main(String[] args) < // List of String arrays Listlist = new ArrayList(); String[] arr1 = < "a", "b", "c" >; String[] arr2 = < "1", "2", "3", "4" >; list.add(arr1); list.add(arr2); // printing list of String arrays in the ArrayList for (String[] strArr : list) < System.out.println(Arrays.toString(strArr)); >> >
Java ArrayList of Object Array
If you are not sure about the type of objects in the array or you want to create an ArrayList of arrays that can hold multiple types, then you can create an ArrayList of an object array. Below is a simple example showing how to create ArrayList of object arrays in java.
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class JavaArrayListOfObjectArray < public static void main(String[] args) < // list of Object arrays to hold different types of array List
[a, b, c] [1, 2, 3, 4] [A.class::AA, A.class::BB]
That’s all for creating an Array of ArrayList and ArrayList of Array in Java. You can checkout more core java examples from our GitHub Repository. Reference: Java Arrays
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases. Learn more about us
Списочный массив ArrayList
В Java массивы имеют фиксированную длину и не могут быть увеличены или уменьшены. Класс ArrayList реализует интерфейс List и может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.
Пример создания объекта ArrayList
ArrayList list = new ArrayList ();
Можно инициализировать массив на этапе определения. Созданный объект list содержит свойство size. Обращение к элементам массива осуществляется с помощью метода get(). Пример :
ArrayList list; list = Arrays.asList(new String[] ); System.out.println ("Размер массива равен '" + Integer.valueOf (list.size()) + "' элементам");
Добавление элемента в массив ArrayList, метод add
Работать с ArrayList просто: необходимо создать объект и вставлять созданные объекты методом add(). Обращение к элементам массива осуществляется с помощью метода get(). Пример:
ArrayList list; list = new ArrayListЗамена элемента массива ArrayList, метод set
Чтобы заменить элемент в массиве, нужно использовать метод set() с указанием индекса и новым значением.
list.add("Яблоко"); list.add("Груша"); list.add("Слива"); list.set(1, "Персик"); System.out.println ( "2-ой элемент массива '" + list.get(1) + "'");Удаление элемента массива ArrayList, метод remove
Для удаления элемента из массива используется метод remove(). Можно удалять по индексу или по объекту:
list.remove(0); // удаляем по индексу list.remove("Слива"); // удаляем по объектуПРИМЕЧАНИЕ: элементы, следующие после удалённого элемента, перемещаются на одну позицию ближе к началу. То же самое относится и к операции вставки элемента в середину списка.
Для очистки всего массива используется метод clear():
Определение позиции элемента ArrayList, метод indexOf
В списочном массиве ArrayList существует метод indexOf(), который ищет нужный элемент и возвращает его индекс.
int index = list.indexOf("Слива"); // выводим имя элемента и его номер в массиве System.out.println (list.get(index) + " числится под номером " + index);Отсчёт в массиве начинается с 0, если индекс равен 2, значит он является третьим в массиве.
Проверка наличие элемента в ArrayList, метод contains
Чтобы узнать, есть в массиве какой-либо элемент, можно воспользоваться методом contains(), который вернёт логическое значение true или false в зависимости от присутствия элемента в наборе :
System.out.println (list.contains("Картошка") + "");Понятно, что в массиве никаких овощей быть не может, поэтому в консоле будет отображено false.
Создание массива из элементов ArrayList, метод toArray
Для конвертирования набора элементов в обычный массив необходимо использовать метод toArray().
ArrayList myArrayList = new ArrayList(); myArrayList.add("Россия"); myArrayList.add("Польша"); myArrayList.add("Греция"); myArrayList.add("Чехия"); String[] array = <>; // конвертируем ArrayList в массив array = myArrayList.toArray(new String[myArrayList.size()]);Интерфейс List
java.util.List является интерфейсом и его следует использовать вместо ArrayList следующим образом :
Или укороченный вариант для Java 7:
В примере тип ArrayList заменен на List, но в объявлении оставлен new ArrayList(). Всё остальное остаётся без изменений. Это является рекомендуемым способом.
Интерфейс List реализует более общий интерфейс коллекции Collection.
Преобразование массива в список, Arrays
Для создания массива можно не только добавлять по одному объекту через метод add(), но и сразу массив с использованием Arrays.asList(. ).
Пример создания и инициализации массива из объектов Integer.
List numlist = Arrays.asList(1, 2, 5, 9, 11); System.out.println (numlist.get(2) + ""); // выводит число 5У данного способа есть недостаток. Если вы определили списочный массив таким образом, то уже не можете вставлять или удалять элемент, хотя при этом можете изменять существующий элемент.
List numlist = Arrays.asList(1, 2, 5, 9, 11); numlist.set(2, 33); // так можно numlist.add(34); // нельзя, ошибка во время исполнения System.out.println (numlist.get(2) + "");