【问题标题】:Android Java How to properly remove int from list?Android Java 如何从列表中正确删除 int?
【发布时间】:2015-09-22 19:01:45
【问题描述】:

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

    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++;
    }

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

【问题讨论】:

  • asList 返回指定数组中对象的列表。 List 的大小不能修改,即不支持添加和删除,但可以设置元素。设置元素会修改底层数组。

标签: java android list arraylist


【解决方案1】:

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));

【讨论】:

    【解决方案2】:

    当您调用 XPoint.remove(left); 时,它不会删除该部分,而是删除存储在索引中的任何值(等于 left),这就是它崩溃的原因如果您想删除该数字,请尝试此操作

    XPoint.remove(new Integer(left));
    

    【讨论】:

    • 谢谢。不过我使用了 Integer.valueOf(Left)。
    • 欢迎,需要更多帮助就说
    【解决方案3】:

    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();

    这应该可行。

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 2015-09-20
      • 2018-05-25
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多