ArrayList的remove方法

女爷i 2023-10-06 17:48 91阅读 0赞

从一个ArrayList中去除某个元素时会用到remove方法,这个方法有两个版本

  1. public E remove(int index)
  2. public boolean remove(Object o)

按索引删除元素
如果接收的是一个int类型的值,则这个值表示的是要删除的元素的索引值,方法返回的值就是被删除的元素,如果索引值在实际的范围外,则会抛出IndexOutOfBoundsException异常。

  1. List<Integer> integers = new ArrayList<>(5);
  2. integers.add(1);
  3. integers.add(2);
  4. integers.add(8);
  5. integers.add(4);
  6. integers.add(5);
  7. System.out.println(integers.remove(2));
  8. System.out.println(integers);List<Integer> integers = new ArrayList<>(5);
  9. integers.add(1);
  10. integers.add(2);
  11. integers.add(8);
  12. integers.add(4);
  13. integers.add(5);
  14. System.out.println(integers.remove(2));
  15. System.out.println(integers);

删除索引为2的元素(8),remove返回值即为8

20190601215727774.png

使用equals方法比较并删除元素
如果接收的是一个object类型的值,则会依次和list中每个元素比较(使用的是equals方法),如果存在,就删除掉第一个遇到的元素,并返回true。

  1. List<Integer> integers = new ArrayList<>(5);
  2. integers.add(1);
  3. integers.add(2);
  4. integers.add(8);
  5. integers.add(2);
  6. integers.add(5);
  7. System.out.println(integers.remove(Integer.valueOf(2)));
  8. System.out.println(integers);
  9. System.out.println(integers.remove(Integer.valueOf(3)));
  10. System.out.println(integers);

可见将2转换为Integer类型后,调用的remove方法和上面的就不同了,删除了2,并返回了true。

如果比较之后不存在这样的元素,就返回false。

20190601222049500.png

所以对于保存了Integer类型的ArrayList来说,因为自动装箱机制的存在,可能添加元素的时候直接使用int类型的元素即可。但是在删除元素的时候就需要注意,如果想要寻找特定元素进行删除,就需要将int值转换为Integer再作为参数传给remove元素,否则传入的int值会作为索引,导致删除错误的元素。

发表评论

表情:
评论列表 (有 0 条评论,91人围观)

还没有评论,来说两句吧...

相关阅读

    相关 容易忽略ArrayList.remove

    ArrayList.remove 方法是常用的一个移除集合里某个对象的方法。此方法使用起来非常方便。但是在使用的时候一定要注意当被移除的对象是int 类型的时候。确保正确使用这