Автор оригинала: Pankaj Kumar.
Иногда нам нужно преобразовать Массив в список на java, здесь мы узнаем два разных способа достижения этой цели. Поскольку List-это интерфейс, а ArrayList-самая популярная реализация, это то же самое, что преобразование массива в ArrayList. Эта ситуация может возникнуть, когда вы вызываете некоторые сторонние классы, возвращающие массив, а затем вам нужно изменить их на список или добавить в список еще несколько данных.
Массив Java для перечисления
В Java есть два встроенных способа преобразования массива в список.
- Arrays.asList(T… a) : Это самый простой способ преобразования Массива в ArrayList в java но этот метод возвращает базовое представление массива в виде ArrayList. Возвращаемый список массивов имеет фиксированный размер , и любая попытка изменить его приведет к исключению UnsupportedOperationException во время выполнения. Кроме того, любое изменение в массиве также приведет к изменению элементов в списке ArrayList.
- Collections.addAll(ArrayList strList, T[] start) : Это лучший способ преобразования массива в ArrayList, поскольку данные массива копируются в список и оба являются независимыми объектами. Как только массив скопирован, вы можете изменить оба объекта независимо. Коллекции является очень полезным классом в Java Collections Framework , который предоставляет множество полезных методов.
Теперь давайте посмотрим, как используются оба этих метода в действии.
package com.journaldev.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ArrayToArrayList {
/**
* This class shows different methods to convert Array to ArrayList
*
* @param args
*/
public static void main(String[] args) {
String[] strArr = {"1", "2", "3", "4"};
List strList = new ArrayList();
//return the list representation of array
//any change in array elements will change the arrayList elements also
strList = Arrays.asList(strArr);
System.out.println("Original ArrayList from Arrays.asList()");
for (String str : strList)
System.out.print(" " + str);
//change the array element and see the effect is propogated to list also.
strArr[0] = "5";
System.out.println("\nChange in array effect on ArrayList");
for (String str : strList)
System.out.print(" " + str);
//below code will throw java.lang.UnsupportedOperationException because
// Arrays.asList() returns a fixed-size list backed by the specified array.
//strList.add("5");
strList = new ArrayList();
Collections.addAll(strList, strArr);
//change both the array and arraylist and check if they are independent?
strList.add("5");
strArr[0] = "1";
System.out.println("\nArray to ArrayList using Collections.addAll()");
for (String str : strList)
System.out.print(" " + str);
}
}
Результатом приведенной выше программы является:
Original ArrayList from Arrays.asList() 1 2 3 4 Change in array effect on ArrayList 5 2 3 4 Array to ArrayList using Collections.addAll() 5 2 3 4 5
Итак, теперь вы знаете, какой метод использовать для преобразования массива в ArrayList в зависимости от требований.
Вот видеоурок, объясняющий это в Eclipse.