0

我有一个多维数组作为

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任何人都可以帮助我从二维日中删除第一个元素。

4

4 回答 4

3

使用以下代码:

 List<int[]> points =new ArrayList(Arrays.asList(numbers));
 Collections.shuffle(points);
 points.remove(0);
于 2013-07-02T10:52:20.703 回答
2

怎么样

List<int[]> points = new ArrayList(Arrays.asList(numbers));
于 2013-07-02T10:46:23.540 回答
0

好吧,它写在Arrays#asList方法的API中

返回由指定数组支持的固定大小的列表。(将返回的列表“写入”到数组的更改。)

您不能修改返回的列表。你能做的就是采纳马苏德的建议

于 2013-07-02T10:51:01.120 回答
0

问题是 Arrays.asList 返回一个在 Arrays 类中私有声明的 List。

 private static class ArrayList<E> extends AbstractList<E>
    implements RandomAccess, java.io.Serializable

并且不执行修改操作,因此你得到

public E remove(int index) {
    throw new UnsupportedOperationException();
}

来自它的超类 AbstractList。

正如 Reimeus 建议的那样:将其包装到 java.util.ArrayList 或 LinkedList

于 2013-07-02T10:53:23.283 回答