如何从数组中的List <integer>中删除项?</integer>

时间:2014-01-11 07:11:02

标签: java android arrays list

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView t;
    List<Integer> listA = Arrays.asList(0,1,2,3);
    List<Integer> listB = Arrays.asList(0,2,4,6,8);
    List<Integer>[] listC = (List<Integer>[])new List[2];

    t = (TextView)findViewById(R.id.textView1);
    listC[0] = listA;
    listC[1] = listB;
    t.setText("Result: "+ listC[0].get(1)); //Result: 1
    listC[0].remove(0); //i get an error in this line
}

我很困惑,为什么我没有收到错误:listC [0] .get(1) 但是出了点问题:listC [0] .remove(0); 我的代码有问题吗?有更有效的方法吗?请帮我!非常感谢你!

3 个答案:

答案 0 :(得分:3)

由于UnSupportedOperationException正在重新调整不可修改的列表,因此可能会得到Arrays.asList()。所以改变

List<Integer> listA = Arrays.asList(0,1,2,3);
List<Integer> listB = Arrays.asList(0,2,4,6,8);

List<Integer> listA = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3));
List<Integer> listB = new ArrayList<Integer>(Arrays.asList(0, 2, 4, 6, 8));

答案 1 :(得分:0)

来自doc for Arrays.asList:

  

列出java.util.Arrays.asList(Integer ... array)

     

public static List asList(T ... array)   在API级别1中添加   返回指定数组中对象的List。无法修改List的大小,即不支持添加和删除,但可以设置元素。设置元素会修改基础数组。

     

参数   数组的数组。

     

返回   指定数组的元素列表。

您无法更改列表的大小,最好更改

List<Integer> listA = Arrays.asList(0, 1, 2, 3);
List<Integer> listB = Arrays.asList(0, 2, 4, 6, 8);

ArrayList<Integer> listA = new ArrayList<Integer>(Arrays.asList(0, 1, 2, 3));
ArrayList<Integer> listB = new ArrayList<Integer>(Arrays.asList(0, 2, 4, 6, 8));

答案 2 :(得分:0)

我建议使用而不是数组     List<List<Integer>> listC = new ArrayList<List<Integer>>(2);这是一种更清洁的方式。

您可以执行以下所有操作。

 public static void main(String args[]) throws Exception {
        List<Integer> listA = Arrays.asList(0, 1, 2, 3);
        List<Integer> listB = Arrays.asList(0, 2, 4, 6, 8);
        List<List<Integer>> listC = new ArrayList<List<Integer>>(2);
        listC.add(listA);
        listC.add(listB);
        System.out.println("Complete List : " + listC);
        System.out.println("First Element :" + listC.get(0));
        listC.remove(1);// removed 2nd element
        System.out.println("List After Removal : " + listC);
    }

输出:

Complete List : [[0, 1, 2, 3], [0, 2, 4, 6, 8]]
First Element :[0, 1, 2, 3]
List After Removal : [[0, 1, 2, 3]]