假设我有ArrayList al ={1,2,3,4,5};我想删除第一个索引,我将使用al.remove(1)。我想删除的值是1,我将使用al.remove(1)。JVM如何理解我是否要删除第一个索引或值=1??我还想按索引和值删除。
nukf8bse1#
从List界面的JavaDoc。请注意,remove()是一个可选方法。
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个项目。你可以这样做。
remove(int index)
remove(Object o)
int
Integer
list = list.subList(10,list.size());
如果保留原始列表,那么对原始列表或子列表中的任何更改都将反映在另一个列表中,因为subList返回原始列表指定部分的视图。
subList
7d7tgy0s2#
您需要将参数指定为 Integer 对象。
al.remove(Integer.valueOf(1));
否则,你是对的,1 的 int 值将被解释为索引值。
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]
2条答案
按热度按时间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个项目。你可以这样做。
如果保留原始列表,那么对原始列表或子列表中的任何更改都将反映在另一个列表中,因为
subList
返回原始列表指定部分的视图。7d7tgy0s2#
您需要将参数指定为 Integer 对象。
否则,你是对的,1 的 int 值将被解释为索引值。
输出量