Как преобразовать String[] в ArrayList‹String›

Возможный дубликат:
Назначение массива в ArrayList в Java

Мне нужно преобразовать String[] в ArrayList<String>, и я не знаю, как

File dir = new File(Environment.getExternalStorageDirectory() + "/dir/");
String[] filesOrig = dir.list();

В основном я хотел бы преобразовать filesOrig в ArrayList.


person Alexandre Hitchcox    schedule 19.04.2012    source источник
comment
stackoverflow.com/ вопросы/3746639/   -  person evanwong    schedule 19.04.2012
comment
Иронично, что он был помечен как дубликат, хотя он более известен, чем оригинал.   -  person Gaurav Mall    schedule 12.08.2019


Ответы (5)


Вы можете сделать следующее:

String [] strings = new String [] {"1", "2" };
List<String> stringList = new ArrayList<String>(Arrays.asList(strings)); //new ArrayList is only needed if you absolutely need an ArrayList
person Scott    schedule 19.04.2012
comment
Спасибо, это тот, который я использовал - person Alexandre Hitchcox; 19.04.2012
comment
Я не верю, что вы сможете потом внести изменения в этот список. stringList.remove(1) точно не работает для меня. - person Bob Lissner; 17.11.2016

Как это :

String[] words = {"000", "aaa", "bbb", "ccc", "ddd"};
List<String> wordList = new ArrayList<String>(Arrays.asList(words));

or

List myList = new ArrayList();
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"};
Collections.addAll(myList, words);
person EricParis16    schedule 19.04.2012
comment
Спасибо .. Я не мог использовать Arrays.asList, так как мне пришлось добавить элемент в список позже. addAll сработало отлично :) - person MysticMagicϡ; 03.12.2014
comment
второй вариант работает - person Someone Somewhere; 13.07.2018

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

Возвращаемый список будет поддерживаться массивом, он действует как мост, поэтому он будет фиксированного размера.

person Jack    schedule 19.04.2012
comment
Этот ответ неверен и даже не скомпилируется. - person suriv; 24.01.2017
comment
@suriv: единственная проблема была List вместо ArrayList, но ответ правильный. Создание копии массива в ArrayList не всегда необходимо, иногда достаточно просто просмотреть массив в виде списка. Имейте в виду, что для создания реальной копии, как в new ArrayList<>(Arrays.asList(array)), требуется память для каждого элемента списка. Например, для массива 100000 Object требуется 800 КБ ОЗУ только для указателей на ссылки. - person Jack; 24.01.2017
comment
Для будущих читателей попытка добавить или удалить элементы из этого списка вызовет исключение. - person suriv; 24.01.2017
comment
@suriv: это четко указано в ответе и четко указано в документации, в любом случае спасибо за разъяснения. - person Jack; 24.01.2017

Вы можете зациклить весь массив и добавить в ArrayList:

ArrayList<String> files = new ArrayList<String>(filesOrig.length);
for(String file: filesOrig) {
    files.add(file);
}

Или используйте Arrays.asList(T... a), чтобы сделать так, как опубликован комментарий.

person Pau Kiat Wee    schedule 19.04.2012
comment
...new ArrayList<String>(filesOrig.length); предотвращает увеличение размера резервного массива. Потенциально быстрее. - person zapl; 19.04.2012

Вы можете сделать что-то вроде

MyClass[] arr = myList.toArray(new MyClass[myList.size()]);

person Carlos Tasada    schedule 19.04.2012