Создать ArrayList из массива - PullRequest
       292

Создать ArrayList из массива

3295 голосов
/ 01 октября 2008

У меня есть массив, который инициализируется как:

Element[] array = {new Element(1), new Element(2), new Element(3)};

Я хотел бы преобразовать этот массив в объект класса ArrayList.

ArrayList<Element> arraylist = ???;

Ответы [ 32 ]

28 голосов
/ 11 апреля 2017

В Java 9 вы можете использовать:

List<String> list = List.of("Hello", "World", "from", "Java");
List<Integer> list = List.of(1, 2, 3, 4, 5);
25 голосов
/ 18 мая 2015

В соответствии с вопросом ответ с использованием Java 1.7:

ArrayList<Element> arraylist = new ArrayList<Element>(Arrays.<Element>asList(array));

Однако лучше всегда использовать интерфейс:

List<Element> arraylist = Arrays.<Element>asList(array);
21 голосов
/ 07 января 2014
// Guava
import com.google.common.collect.ListsLists
...
List<String> list = Lists.newArrayList(aStringArray); 
17 голосов
/ 02 мая 2016

Вы можете конвертировать, используя разные методы

  1. List<Element> list = Arrays.asList(array);

  2. List<Element> list = new ArrayList();<br> Collections.addAll(list, array);

  3. Arraylist list = new Arraylist();<br> list.addAll(Arrays.asList(array));

Для более подробной информации вы можете обратиться к http://javarevisited.blogspot.in/2011/06/converting-array-to-arraylist-in-java.html

16 голосов
/ 05 января 2017

как все сказали, так и будет

 new ArrayList<>(Arrays.asList("1","2","3","4"));

и наиболее распространенный новый способ создания массива - observableArrays

ObservableList: Список, который позволяет слушателям отслеживать изменения, когда они происходят.

для Java SE вы можете попробовать

FXCollections.observableArrayList(new Element(1), new Element(2), new Element(3));

, что соответствует Oracle Docs

observableArrayList () Создает новый пустой наблюдаемый список, который поддерживается архиватором. observableArrayList (E ... items) Создает новый список наблюдаемых массивов с добавленными в него элементами.

Обновление Java 9

также в Java 9 это немного просто:

List<String> list = List.of("element 1", "element 2", "element 3");
15 голосов
/ 23 декабря 2016

Начиная с Java 8, существует более простой способ преобразования:

public static <T> List<T> fromArray(T[] array) {
    return Arrays.stream(array).collect(toList());
}
14 голосов
/ 06 февраля 2016

Вы также можете сделать это с потоком в Java 8.

 List<Element> elements = Arrays.stream(array).collect(Collectors.toList()); 
10 голосов
/ 30 марта 2016
  1. Если мы увидим определение метода Arrays.asList(), вы получите что-то вроде этого:

     public static <T> List<T> asList(T... a) //varargs are of T type. 
    

    Итак, вы можете инициализировать arraylist следующим образом:

     List<Element> arraylist = Arrays.asList(new Element(1),new Element(2),new Element(3));
    

    Примечание : каждый new Element(int args) будет рассматриваться как отдельный объект и может быть передан как var-args.

  2. Может быть и другой ответ на этот вопрос.
    Если вы увидите объявление для метода java.util.Collections.addAll(), вы получите что-то вроде этого:

    public static <T> boolean addAll(Collection<? super T> c, T... a);
    

    Итак, этот код также полезен для этого

    Collections.addAll(arraylist, array);
    
8 голосов
/ 10 июля 2017

Если массив имеет примитивный тип, данные ответы не будут работать. Но начиная с Java 8 вы можете использовать:

int[] array = new int[5];
Arrays.stream(array).boxed().collect(Collectors.toList());
8 голосов
/ 03 декабря 2018

Используйте следующий код для преобразования массива элементов в ArrayList.

Element[] array = {new Element(1), new Element(2), new Element(3)};

ArrayList<Element>elementArray=new ArrayList();
for(int i=0;i<array.length;i++) {
    elementArray.add(array[i]);
}
...