【问题标题】:Java, how to remove an Integer item in an ArrayListJava,如何删除 ArrayList 中的整数项
【发布时间】:2014-03-14 18:13:45
【问题描述】:

假设我有这样一个 ArrayList:

ArrayList<Integer> list = new ArrayList<Integer>();

添加操作后:

list.add(2);
list.add(3);
list.add(5);
list.add(7);

如果我愿意,我想删除 number 2

list.remove(2);

那么number 5将被删除,我如何删除number 2?并且假设我不知道number 2 的索引。

【问题讨论】:

标签: java


【解决方案1】:

您可以使用list.remove(new Integer(i)),其中 i 是您要删除的元素。

【讨论】:

    【解决方案2】:

    在你的情况下,这也应该有效,

    list.removeIf(element -> element == 2);
    

    【讨论】:

    • 知道这个问题已经被回答了,这只是达到同样目的的另一种方法。
    【解决方案3】:

    最简单的方法是:

    list.remove((Integer)5);
    

    没有不必要的对象创建,只是将索引转换为整数。奖励:最简单的语法。

    【讨论】:

    • 嗨 :),这个答案已经被回答了。如果你有什么要添加的,也请包括它,否则考虑删除它。
    • 这已经在here回答了
    【解决方案4】:

    你调用list.remove(int)方法,但是你需要调用list.remove(Object)方法。

    有几种方法可以做到这一点:

    1. list.remove(Integer.valueOf(2)); // removes the first occurrence of 2
    2. list.remove(list.indexOf(2)); // also removes the first occurrence of 2
    3. list.removeAll(Arrays.asList(2)); // removes all occurrences of 2

    【讨论】:

      【解决方案5】:

      代替:

      list.remove(Integer.valueOf(2));
      

      你当然可以使用:

      list.remove((Integer) 2);
      

      这将转换为 Integer 对象而不是原始对象,然后通过 Object 而不是 Arraylist 索引 remove()

      【讨论】:

      • 所以它会寻找对象,只要它是一个 Integer 而不是 int 对吗?例如- public void findById(Integer id){ Object item = array.get(id); } 将返回值而不是正确的位置?
      【解决方案6】:

      如果你使用这样的方法,它将删除索引 2 处的元素

      您的阵列列表:2,3,5,7

      list.remove(2);

      输出:2,5,7

      如果你使用这样的方法,它将删除值为 2 的元素

      你的阵列列表:2,3,5,7

      list.remove(Integer.valueOf(2));

      输出:3,5,7

      希望对您有所帮助...

      【讨论】:

        【解决方案7】:

        试试,

        list.remove(0);
        
        1. 删除(整数索引)

          删除此列表中指定位置的元素(可选 手术)。将任何后续元素向左移动(减去 一个来自他们的指数)。返回从中删除的元素 列表。

        2. 移除(对象o)

          从此移除指定元素的第一个匹配项 列表(如果存在)。如果列表不包含该元素,则 不变。更正式地说,删除最低的元素 索引 i 使得 (o==null ? get(i)==null : o.equals(get(i))) (如果 存在这样的元素)。如果此列表包含 指定的元素(或等效地,如果此列表因此而更改 通话)。

        【讨论】:

          【解决方案8】:

          试试这个:

          list.remove(list.indexOf(2));
          

          【讨论】:

            【解决方案9】:

            我想这就是你想要的:ArrayList <Integer> with the get/remove method

            list.remove(new Integer(2));
            

            【讨论】:

            • 你应该更喜欢Integer.valueOf而不是构造函数,因为它使用内部缓存来防止不必要的对象创建。
            【解决方案10】:

            remove()方法有两个版本:

            对于ArrayList&lt;Integer&gt;,删除像2 这样的整数值会被视为索引,因为remove(int) 是完全匹配的。它不会将2 装箱到Integer,并扩大它。

            一种解决方法是显式获取Integer 对象,在这种情况下,扩大比拆箱更受欢迎:

            list.remove(Integer.valueOf(2));
            

            【讨论】:

              【解决方案11】:

              没有找到特定列表元素然后删除它的明确方法。您必须首先使用indexOf 方法找到它:

              int index = list.indexOf(element); // for your example element would be 2
              list.remove(index);
              

              请注意,indexOf 返回您提供给它的对象的第一次出现的索引,因此您必须针对要删除其中的项目的情况进行相应调整列表多次。

              【讨论】:

                【解决方案12】:

                试试这个

                list.removeAll(Arrays.asList(2));
                

                它将删除所有 value = 2 的元素

                你也可以用这个

                list.remove(Integer.valueOf(2));
                

                但它只会删除第一次出现的 2

                list.remove(2) 不起作用,因为它匹配 List.remove(int i) 删除具有指定索引的元素

                【讨论】:

                  【解决方案13】:
                  list.remove(0);
                  

                  0 表示索引 0 处的元素

                  你已经写了list.remove(2);,这意味着删除索引2处的元素(即第三位的元素,即5,因为ArrayList从索引0,1,2开始......)

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2011-01-26
                    • 2012-08-25
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多