Android Java如何从列表中正确删除int?

时间:2015-07-05 15:54:22

标签: java android list arraylist

目前我正在尝试编写一个代码,该代码将从各个点坐标创建一个列表,然后从列表中删除3个最小的int。当我运行应用程序时,它崩溃了。我发现我发生在删除部分。我已经研究过其他类似的线程,但解决方案与我的相似。这是我的代码:

    List<Integer> XPoint = Arrays.asList(A.x, B.x, C.x, D.x, E.x, F.x, G.x, K.x);
    List<Integer> XPLeft = Arrays.asList();
    int XPLeftTimes = 0;

    //Find 3 min X values(left)
    while(XPLeftTimes != 2){
    int Left = Collections.min(XPoint);
    XPoint.remove(Left); <-App crashes here
    XPLeft.add(Left);
    XPLeftTimes++;
    }

enter image description here

我做错了什么?提前谢谢。

3 个答案:

答案 0 :(得分:2)

Arrays.asList()返回由指定数组支持的固定大小的列表。

List<Integer> xPoint = new ArrayList(Arrays.asList(A.x, B.x, C.x, D.x, E.x, F.x, G.x, K.x));

答案 1 :(得分:1)

当您调用XPoint.remove(left);时,它不会删除该部分,它会删除索引中存储的任何值(等于左侧),这就是它崩溃的原因如果要删除它试试这个

XPoint.remove(new Integer(left));

答案 2 :(得分:0)

Arrays.asList()返回无法修改的固定大小数组。 如果你想修改它,你必须通过复制其内容创建一个新的可修改的Arraylist,如下所示:

List XPoint = new ArrayList(Arrays.asList(A.x, B.x, C.x, D.x, E.x, F.x, G.x, K.x));

列出XPLeft = new ArrayList();

这应该有用。