Как преобразовать массив в arraylist java
Перейти к содержимому

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

  • автор:

Как из массива сделать arraylist java

Проще всего воспользоваться методом Arrays.asList() :

import java.util.Arrays; import java.util.List; public class App  public static void main(String[] args)  Integer[] arr = 1,2,3,4>; ListInteger> list = Arrays.asList(arr); System.out.println(list); // => [1, 2, 3, 4] > > 

Класс ArrayList . Методы преобразующие массив в целом

В примере формируется массив чисел. Затем с помощью метода clone() делается копия массива. В копии меняется один элемент. Под конец выводятся оба массива. После результата видно, что массивы имеют разные значения. Это означает, что они размещаются в разных участках памяти. Изменение значений в одном массиве не влияет на другой массив.

import java.util.*; public class TrainCollections < public static void main(String[] args) < // Метод clone() - сделать копию из коллекции // 1. Создать коллекцию из чисел ArrayList AL = new ArrayList(); AL.add(1); AL.add(2); AL.add(3); AL.add(4); AL.add(5); System.out.println("AL => " + AL); // 2. Сделать копию из коллекции ArrayList AL2 = (ArrayList) AL.clone(); // 3. Вывести копию AL2 System.out.println("AL2 => " + AL2); // 4. Изменить копию AL2 AL2.set(2, 100); // Изменить другой элемент // 5. Вывести оригинал AL и копию AL2 System.out.println("After change AL2: "); System.out.println("AL color: #0000ff;">out.println("AL2 color: #333300;">⇑ 
2. Метод subList().Получить фрагмент массива на основе заданного массива

Метод subList() возвращает подмассив на основе заданного массива. Общая форма объявления метода следующая

public List subList(int fromIndex, int toIndex);
  • fromIndex , toIndex – диапазон значений в исходном массиве, на основе которого формируется результирующий массив.

Для метода определены следующие особенности:

  • значение fromIndex рассматривается как включенное. Значение toIndex рассматривается как исключенное. Например, если нужно получить первые 3 элемента массива, то fromIndex=0 , toIndex=3 ;
  • если fromIndex и toIndex равны между собой, то возвращается пустой массив;
  • возвращаемый список является составной частью исходного списка. Это означает, что все изменения в результатах будут изменять исходный список. И, напротив, все изменения в исходном списке будут влиять на результирующий список;
  • для результирующего списка определены все основные операции над списком, которые будут влиять на исходный список.

При неправильном использовании метода могут быть сгенерированы следующие исключения:

  • IndexOutOfBoundsException – случай, когда значение fromIndexsize() ;
  • IllegalArgumentException – случай, когда fromIndex>toIndex .

Пример.

import java.util.*; public class TrainCollections < public static void main(String[] args) < // Метод subList() - получить подмассив на основе заданного массива // 1. Создать массив чисел ArrayList AL = new ArrayList(); AL.add(10); AL.add(20); AL.add(30); AL.add(40); AL.add(50); AL.add(60); AL.add(70); // 2. Вывести исходный массив AL System.out.print("AL => "); for (int i=0; iout.print(AL.get(i) + " "); System.out.println(); // 3. Получить подмассив List AL2 = (List) AL.subList(1, 4); // AL2 = // 4. Вывести подмассив System.out.print("AL2 => "); for (int i=0; iout.print(AL2.get(i) + " "); System.out.println(); // 5. Изменить элементы с индексами 2, 3 в исходном массиве, // будет изменяться и массив AL2 AL.set(2, 55); AL.set(3, 88); // AL2 => 20 555 888 // 6. Вывести подмассив System.out.print("AL2 => "); for (int i=0; iout.print(AL2.get(i) + " "); System.out.println(); // 7. Очистить массив AL2 AL2.clear(); // 8. Вывести исходный массив System.out.print("AL => "); for (int i=0; iout.print(AL.get(i) + " "); System.out.println(); > >

Результат выполнения программы

AL => 10 20 30 40 50 60 70 AL2 => 20 30 40 AL2 => 20 55 88 AL => 10 50 60 70
3. Метод toArray() . Конвертировать массив ArrayList в массив типа Object[]

Метод toArray() конвертирует массив ArrayList в массив типа Object[] . Согласно документации объявления метода следующее

public Object[] toArray();

Пример.

В этом примере создается массив символов типа ArrayList . Затем этот массив преобразуется в массив типа Object[] .

import java.util.*; public class TrainCollections < public static void main(String[] args) < // Метод toArray() - получить подмассив на основе заданного массива // 1. Создать массив символов ArrayList AL = new ArrayList(); AL.add('0'); AL.add('1'); AL.add('2'); AL.add('3'); AL.add('4'); AL.add('5'); // 2. Вывести исходный массив AL System.out.print("AL => "); for (int i=0; iout.print(AL.get(i) + " "); System.out.println(); // 3. Конвертировать в массив типа Object[] Object AC[] = AL.toArray(); // 4. Вывести массив AC System.out.print("AC => "); for (int i=0; iout.print(AC[i] + " "); System.out.println(); > >

Результат выполнения программы

AL => 0 1 2 3 4 5 AC => 0 1 2 3 4 5
4. Метод retainAll() . Сформировать новый массив, содержащий элементы заданной коллекции

Метод retainAll() позволяет в заданном массиве сохранить только элементы, которые определены в заданной коллекции. Иными словами, метод удаляет из массива элементы, не содержащиеся в заданной коллекции. Согласно документации объявление метода имеет следующий вид

public boolean retainAll(Collection c);
  • c – коллекция элементов, которые необходимо сохранить в исходном массиве.

Если в исходном массиве произошли изменения, метод возвращает true .

Пример.

В примере выполняются следующие действия:

  • создается исходный массив целых чисел AL ;
  • создается массив AL2 , содержащий числа, которые нужно оставить в массиве AL ;
  • вызывается метод retainAll() для массива AL .
import java.util.*; import java.util.function.*; public class TrainCollections < public static void main(String[] args) < // Метод retainAll() - сформировать новый массив на основе заданного // 1. Создать коллекцию целых чисел ArrayList AL = new ArrayList(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); AL.add(5); AL.add(8); AL.add(4); // 2. Вывести исходную коллекцию целых чисел с помощью итератора Iterator it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Сформировать коллекцию элементов, которые нужно оставить в массиве AL ArrayList AL2 = new ArrayList(); AL2.add(2); AL2.add(4); AL2.add(6); AL2.add(8); // 4. Вывести коллекцию AL2 System.out.print("AL2 => "); for (int i=0; iout.print(AL2.get(i) + " "); System.out.println(); // 5. Вызвать метод retainAll() AL.retainAll(AL2); // 6. Вывести измененную коллекцию AL it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) < System.out.print(it.next() + " "); > > >

Результат выполнения программы

AL => 2 3 2 4 7 3 5 8 4 AL2 => 2 4 6 8 AL => 2 2 4 8 4

Связанные темы

  • Класс ArrayList . Динамический массив. Общие сведения. Создание массива
  • Методы изменяющие данные в массиве. Методы add() , addAll() , clear() , remove() , removeIf() , replaceAll() , set() , sort()
  • Методы, определяющие информацию об элементах массива. Методы get() , contains() , containsAll() , indexOf() , lastIndexOf() , iterator() , listIterator()
  • Методы определяющие общие характеристики массива. Методы ensureCapacity() , isEmpty() , size() , trimToSize()

array -> ArrayList при разных типах массивов

Как преобразовать массив типа int в ArrayList? Насколько понимаю ArrayList не работает с примитивами.

int [] array=new int[5]; ArrayList arrlist = new ArrayList<>(Arrays.asList(array)); 

Или есть другие варианты решения?
Отслеживать
user419583
задан 13 окт 2020 в 19:33
Александр Багно Александр Багно
11 1 1 бронзовый знак
Если вы получили исчерпывающий ответ, отметьте его как принятый (плюсик и галочка слева от ответа)
– user419583
5 дек 2020 в 15:26

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

С помощью стримов - int[] array = new int[5]; List list = Arrays.stream(array).boxed().collect(Collectors.toList()); 
List list = Arrays.asList(ArrayUtils.toObject(array)); 

Отслеживать
ответ дан 13 окт 2020 в 19:42
AlekseiGaile AlekseiGaile
1,698 3 3 золотых знака 10 10 серебряных знаков 16 16 бронзовых знаков

Не обязательно массив int[] преобразовывать в ArrayList . Можно получить IntStream по его элементам с помощью метода Arrays.stream(int[]) , обработать их и вернуть обратно массив:

int[] array = new int[]; int[] arr2 = Arrays.stream(array) // обрабатываем элементы .filter(i -> i != 4) .map(i -> i * 2) // возвращаем массив .toArray(); System.out.println(Arrays.toString(arr2)); // [2, 4, 6, 10] 

Отслеживать
ответ дан 5 дек 2020 в 15:22
user419583 user419583

int[] array = new int[5]; ArrayList arrlist = new ArrayList<>(); for (int i : array)

Отслеживать
ответ дан 14 окт 2020 в 6:26
139 8 8 бронзовых знаков

  • java
  • массивы
  • arraylist
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.2.14.4854

Create ArrayList from array in Java

You want to convert your standard Java array, such as the one below, to an ArrayList to take advantage of the dynamically allocated memory.

Click to Copy

String[] array = ;

The easiest way to convert to an ArrayList is to use the built-in method in the Java Arrays library: Arrays.asList(array) . This method will take in a standard array and wrap it in the AbstractList class, exposing all the methods available to objects that implement the List interface.

Click to Copy

List list = Arrays.asList(array);

It is important to note, however, that this has no effect on the actual data structure or data from the original code. This can catch some programmers out, as they may expect the new list object to behave like a true List . The example below will cause an UnsupportedOperationException :

Click to Copy

List list = Arrays.asList(array); list.remove(1);

This is because the underlying data structure is still a static array, therefore the size cannot be changed. To create a true ArrayList data structure, we need to instantiate a new instance of the ArrayList object:

Click to Copy

List list = new ArrayList<>(Arrays.asList(array));

The code above will create a new ArrayList instance and use the data from our original array to populate its initial values. The memory for our list object will now be dynamically allocated, so method calls such as list.remove or list.add will work as expected.

In conclusion, we can create an ArrayList from a standard array quite easily using methods from core Java libraries as long as we are careful to instantiate the object correctly.

Loved by over 4 million developers and more than 90,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *