Вопрос:
У меня многомерный массив, как
private int numbers[][] ={{ 170, 100 },{ 270, 100 },{ 370, 100 },{ 470, 100 }}
Теперь я меняю позиции, используя Collections.shuffle(Arrays.asList(numbers)); Теперь я хочу удалить первый элемент из перетасованного массива, т. {170,100} Если первый элемент {170,100}, он должен быть удален из массива. Для этого я попытался сделать что-то вроде этого
List<int[]> points =Arrays.asList(numbers); Collections.shuffle(points); points.remove(0);
но он бросает java.lang.UnsupportedOperationException может кто-нибудь помочь мне удалить первый элемент из двухмерного дня.
Лучший ответ:
Используйте следующий код:
List<int[]> points =new ArrayList(Arrays.asList(numbers)); Collections.shuffle(points); points.remove(0); Ответ №1
Как насчет
List<int[]> points = new ArrayList(Arrays.asList(numbers)); Ответ №2
Ну, его написано в методе API Arrays#asList
Возвращает список фиксированного размера, поддерживаемый указанным массивом. (Изменения в возвращенном списке “write through” в массив.)
Вы не можете изменить возвращенный список. Что вы можете сделать, так это использовать предложение Масуда.
Ответ №3
Проблема заключается в том, что Arrays.asList возвращает список, который объявляется в объявлении класса Array.
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
и не выполняет операции модификации, таким образом, вы получаете
public E remove(int index) { throw new UnsupportedOperationException(); }
из этого суперкласса AbstractList.
Как предложил Реймеус: оберните его в java.util.ArrayList или LinkedList