gpt4 book ai didi

java - 删除 ArrayList 中所有出现的第一个元素

转载 作者:行者123 更新时间:2023-12-01 17:26:03 27 4
gpt4 key购买 nike

我想删除 ArrayList 中与第一个元素重复的所有元素,但我希望第一个元素保留在 ArrayList 中。我尝试使用 for 循环来做到这一点,但它没有删除所有重复项。

for(int i = 1; i < arraylist.size(); i++) {
if(arraylist.get(i) == v1)
arraylist.remove(i);
}

v1 等于数组列表的第一个元素。我也尝试过使用 ListIterator,但它删除了第一个元素

ListIterator<Integer> iterator = arraylist.listIterator();
while(iterator.hasNext()) {
if(iterator.next().intValue() == v1)
iterator.remove();
}

你能帮我吗?

最佳答案

您需要在 while 循环之外单独读取第一个元素,并将其存储在某个变量中,您可以将其与其余元素进行比较,以删除:

ListIterator<Integer> iterator = arraylist.listIterator();
int first = 0;
// Check if there is a first element
if (iterator.hasNext()) {
first = iterator.next();

// Iterate over the rest of the elements
while(iterator.hasNext()) {
// If this value is equal to `first`, remove it
if(iterator.next().intValue() == first) {
iterator.remove();
}
}
}
System.out.println(arrayList);

iterator.next() 将返回 Integer 类型的值。使用 intValue() 将给出您的原始值。

但是由于我正在与 int 原语本身进行比较,因此您根本不需要调用 intValue()。在比较之前,您的Integer将自动拆箱为原始int。因此,将 while 中的 if 语句替换为以下语句也将起作用:

if(iterator.next() == first) {
iterator.remove();
}
<小时/>

就您的第一种方式而言,我想说,如果您想修改正在循环的List,请始终使用Iterator。这将防止您面临尴尬的 ConcurrentModificationException

<小时/>

另请参阅:

关于java - 删除 ArrayList 中所有出现的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com