преобразование массива строк в ArrayList‹String›

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

Как я могу преобразовать массив строк, например:

String logsSplitFromUrdu[] = fromTheRecentLogFile.split("غزل");

в ArrayList<String> ?

Изменить:

Я делал, как когда я получаю сообщение об ошибке:

ArrayList<String> time = (ArrayList<String>)Arrays.asList(logsSplitFromUrdu);

ИЗМЕНИТЬ:

Исключение, которое я получаю, когда делаю вышеизложенное:

java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
    at Tester.main(Tester.java:26)

person Y.E.P    schedule 14.10.2012    source источник
comment
Что вы пробовали?   -  person Andrew Thompson    schedule 14.10.2012
comment
Вы просмотрели документацию: - Массив#какСписок   -  person Rohit Jain    schedule 14.10.2012
comment
Какая ошибка? Или угадывание часть удовольствия?   -  person Andrew Thompson    schedule 14.10.2012
comment
Ошибка @AndrewThompson, что ее нельзя использовать   -  person Y.E.P    schedule 14.10.2012
comment
Пожалуйста, скопируйте/вставьте новую информацию в вопрос в качестве редактирования и используйте форматирование кода.   -  person Andrew Thompson    schedule 14.10.2012
comment
@AndrewThompson добавил исключение   -  person Y.E.P    schedule 14.10.2012
comment
asList возвращает List‹String›, а не ArrayList‹String›. В 99,9% случаев это делает то же самое.   -  person Paul Tomblin    schedule 14.10.2012
comment
stackoverflow .com/questions/4658867/   -  person Natix    schedule 14.10.2012


Ответы (6)


Используйте метод Arrays.asList() из класса Arrays. Он вернет List правильного универсального типа (в данном случае String):

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

Если вам абсолютно необходимо ArrayList<String>, а List<String> не подойдет, то напишите одну дополнительную строку после предыдущей:

ArrayList<String> arraylist = new ArrayList<String>(list);
person Óscar López    schedule 14.10.2012

Взгляните на Arrays#asList. Этот метод возвращает список fixed size.

Итак, если вы ok with fixed size list, вы можете использовать это: -

List<String> fixedList = Arrays.asList(logsSplitFromUrdu);

Но если вы want to modify только что создали List, вам нужно создать его следующим образом: -

ArrayList<String> modifiableList = 
             new ArrayList<String>(Arrays.asList(logsSplitFromUrdu))

НО вы не должны делать это следующим образом: -

ArrayList<String> modifiableList = 
                  (ArrayList<String>)Arrays.asList(logsSplitFromUrdu))

Это даст вам ClassCastException, потому что список, возвращенный из Arrays.asList, имеет тип: - java.util.Arrays.ArrayList и его нельзя привести к: - java.util.ArrayList

ОБНОВЛЕНИЕ: - java.util.Arrays#ArrayList является статическим классом, определенным в классе Arrays.

person Rohit Jain    schedule 14.10.2012
comment
java.util.List.ArrayList Сомневаюсь, что он вообще существует! - person Y.E.P; 14.10.2012
comment
@ Y.E.P Извините. java.util.Массивы.ArrayList. Буду модифицировать.. - person Rohit Jain; 14.10.2012
comment
@Y.E.P См. этот отличный пост: вернуть свою собственную реализацию массива"> stackoverflow.com/questions/4658867/ для получения дополнительной информации об этом - person Rohit Jain; 14.10.2012

Вы должны использовать метод asList для java.util.Arrays, обратитесь к документации здесь

person Akhilesh    schedule 14.10.2012

Используйте метод Arrays.asList() для преобразования array в ArrayList

String logsSplitFromUrdu[] = fromTheRecentLogFile.split("غزل");

ArrayList<String> arList = new ArrayList<String>(Array.asList(logsSplitFromUrdu));
person Kumar Vivek Mitra    schedule 14.10.2012

Вы можете просто использовать цикл for для копирования всех элементов из массива в новый ArrayList следующим образом:

ArrayList<String> logsList = new ArrayList<String>();
for(int i = 0; i < logsSplitFromUrdu.length; i++)
{
    logsList.add(logsSplitFromUrdu[i]);
}

И после этого logsList будет содержать все элементы исходного массива.

person Tristan Hull    schedule 14.10.2012

Тип возвращаемого значения

Arrays.asList(logsSplitFromUrdu);

равно List<String> и не может быть преобразовано в ArrayList<String>. Вместо этого вы можете использовать:

List<String> myList = Arrays.asList(logsSplitFromUrdu);

который возвращает неизменяемый список. Чтобы получить изменяемый список, вы можете использовать:

ArrayList<String> modifyiableList = new ArrayList<String>(myList); 
modifyiableList.add("...");
person Reimeus    schedule 14.10.2012