Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Приведение типов java (Arrays.asList ->List )

#java


Допустим есть следующий код:

public static void main(String[] args) {
Integer[] mass = {1, 8, 9, 12, 15, 14, 17, 13};
List r = Arrays.asList(mass);
  System.out.println(r.get(3));
  System.out.println(r.remove(3));

}


r.get(3) возвращает какое-то значение а r.remove(3) кидает 

UnsupportedOperationException
    at java.util.AbstractList.remove


r.getClass().getName() возвращает java.util.Arrays$ArrayList

Насколько я понял метод asList класса Arrays возвращает экземпляр внутреннего класса
java.util.Arrays$ArrayList который имплементит List
метод get вроде нормально там реализован а метод remove перевызывает remove у  AbsttactList
который кидает данное исключение.

Как можно  из массива получить экземпляр нормального  Arrayslist или LinkedList?
    


Ответы

Ответ 1



Попробуйте объявить r как ArrayList вместо List. При этом создав новый экземпляр ArrayList через конструктор ArrayList(List list): ArrayList r = new ArrayList<>( Arrays.asList(mass) );

Ответ 2



Судя по всему вам поможет ответ из аналогичного вопроса new ArrayList(Arrays.asList(array))

Комментариев нет:

Отправить комментарий