如何从java中的二维数组中删除元素

时间:2013-07-02 10:44:46

标签: java multidimensional-array

我有一个多维数组

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 个答案:

答案 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方法

的API编写的
  

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

您无法修改返回的列表。您可以做的是使用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