我有一个多维数组
private int numbers[][] ={{ 170, 100 },{ 270, 100 },{ 370, 100 },{ 470, 100 }}
现在我正在使用Collections.shuffle(Arrays.asList(numbers));
更改位置
现在我想从混洗数组中删除第一项,即如果第一项是{170,100}
,则必须从数组中删除它。为此,我试图做这样的事情
List<int[]> points =Arrays.asList(numbers);
Collections.shuffle(points);
points.remove(0);
但正在投掷java.lang.UnsupportedOperationException
任何人都可以帮助我从二维日中删除第一个元素。
答案 0 :(得分:3)
使用以下代码:
List<int[]> points =new ArrayList(Arrays.asList(numbers));
Collections.shuffle(points);
points.remove(0);
答案 1 :(得分:2)
怎么样
List<int[]> points = new ArrayList(Arrays.asList(numbers));
答案 2 :(得分:0)
好吧,它是用Arrays#asList
方法
返回由指定数组支持的固定大小的列表。 (对返回列表的更改“直写”到数组。)
您无法修改返回的列表。您可以做的是使用Masud's suggestion。
答案 3 :(得分:0)
问题是Arrays.asList返回一个在Arrays类中私有声明的List。
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
并且没有实现修改操作,因此yuo're getting
public E remove(int index) {
throw new UnsupportedOperationException();
}
来自它的超类AbstractList。
正如Reimeus建议的那样:将其包装到java.util.ArrayList或LinkedList
中