如果存在整数类型的 Arraylist。我想从中删除第一个索引。它与第一个索引和值 1 有何不同

If Arraylist of integer type is present. And I want to remove 1st index from it. How it differ by 1st index and value 1

提问人:MCA22 Adarsh Kumar 提问时间:6/27/2023 最后编辑:PaulMcKenzieMCA22 Adarsh Kumar 更新时间:7/6/2023 访问量:51

问:

想象一下我有 数组列表 al ={1,2,3,4,5}; 我想删除我将使用的第一个索引 al.remove(1)。 我想按值删除,即 1,我将使用 al.remove(1)。 JVM 如何理解我是要删除第一个索引还是 value=1? 我也想按索引和值删除。

Java ArrayList 方法

评论

0赞 Davide 6/27/2023
这完全是关于重载的删除方法。当仅提供“1”时,它被视为基元,因此它调用 remove(int index) 方法
1赞 Mike 'Pomax' Kamermans 6/27/2023
与其要求人们想象事物,不如记住展示真实的代码。因为不是有效的 java,也不会告诉人们你实际上在做什么(你是否依赖自动装箱?您是否显式地构建对象?至于 JVM 是如何知道的:它没有,但编译器知道。Java 是一种强类型语言,当您编写时,编译器会将其解析为方法。ArrayList al ={1,2,3,4,5};Integerremove(1)remove(int)
1赞 user16320675 6/27/2023
相关新闻: 如何从列表中删除整数? 或 从列表中正确删除整数<整数> 等等 ||你应该已经完成了这次旅行:“不要问...... 您尚未尝试找到答案的问题"

答:

0赞 Reilas 6/27/2023 #1

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

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

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

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

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]

评论

0赞 MCA22 Adarsh Kumar 6/28/2023
非常感谢yu。
0赞 WJS 6/27/2023 #2

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

E remove(int 索引)

删除此列表中指定位置的元素(可选操作)。将任何后续元素向左移动(从其索引中减去一个)。返回从列表中删除的元素。返回位于指定位置的元素。

boolean remove(对象 o)

从此列表中删除指定元素的第一个匹配项(如果存在)(可选操作)。如果此列表不包含该元素,则保持不变。更正式地说,删除索引最低的元素 i,使 Objects.equals(o, get(i)) (如果存在这样的元素)。如果此列表包含指定的元素,则返回 true(或者等效地,如果此列表因调用而更改)。如果对象存在,则返回 true,否则返回 false。

由于目前定义了方法,因此选择具有与参数类型最匹配的参数的方法。

请注意,如果只有 和 no 则无论指定 an 还是 .在后一种情况下,将被拆箱为 .remove(int index)remove(Object o)remove(int index)intIntegerIntegerint

顺便说一句,如果您要删除一个或多个连续项目,从索引 0 开始,您不妨为列表分配一个子列表,因为它会更有效,尤其是对于大型列表。假设您要删除前 10 个项目。你可以这样做。

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

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

评论

0赞 MCA22 Adarsh Kumar 6/28/2023
非常感谢!!