java 如果存在整数类型的Arraylist,我想把第一个索引去掉,第一个索引和值1的区别

klsxnrf1  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(159)

假设我有ArrayList al ={1,2,3,4,5};我想删除第一个索引,我将使用al.remove(1)。我想删除的值是1,我将使用al.remove(1)。JVM如何理解我是否要删除第一个索引或值=1??我还想按索引和值删除。

nukf8bse

nukf8bse1#

List界面的JavaDoc。请注意,remove()是一个可选方法。

E remove(int index)

移除列表中指定位置的元素(可选操作)。将所有后续元素左移(从它们的索引中减去1)。返回从列表中删除的元素。返回指定位置的元素。

boolean remove(Object o)

从列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。如果此列表不包含该元素,则该元素不变。更正式地说,删除索引i最小的元素,使得Objects.equals(o,get(i))(如果存在这样的元素)。如果此列表包含指定的元素(或者等效地,如果此列表因调用而更改),则返回true。如果对象存在,则返回true,否则返回false。
由于方法是目前定义的,因此选择具有与参数类型最匹配的参数的方法。
请注意,如果只有remove(int index)而没有remove(Object o),那么无论指定int还是Integer,调用remove(int index)都可以工作。在后一种情况下,Integer将被拆箱为int
顺便说一句,如果你要删除一个或多个连续的项目,从索引0开始,你也可以给列表分配一个子列表,因为它会更有效,特别是对于大列表。假设您想删除前10个项目。你可以这样做。

list = list.subList(10,list.size());

如果保留原始列表,那么对原始列表或子列表中的任何更改都将反映在另一个列表中,因为subList返回原始列表指定部分的视图。

7d7tgy0s

7d7tgy0s2#

  • "... JVM如何理解我是否要删除第一个索引或值=1??我还想按索引和值删除。"*

您需要将参数指定为 Integer 对象。

al.remove(Integer.valueOf(1));

否则,你是对的,1int 值将被解释为索引值。

List<Integer> al = new ArrayList<>(List.of(1, 2, 3, 4, 5));
al.remove(Integer.valueOf(1));

System.out.println(al);

输出量

[2, 3, 4, 5]

相关问题