gpt4 book ai didi

java - 迭代器可以从列表中删除不等于特定值的项目吗?

转载 作者:行者123 更新时间:2023-12-01 13:32:53 26 4
gpt4 key购买 nike

似乎当我尝试迭代列表时,我无法删除与我希望保留的项目不相等的所有项目。

例如,我有以下代码:

for (Iterator<Alphabet> iter = list.iterator(); iter.hasNext();) {
Alphabet item = iter.next();
if (!item.letter().equals("C")) {
iter.remove();
}
}

我希望该列表将是一个包含字母“C”的字母元素的列表,但事实并非如此。我实际上得到一个空列表。我如何改变这个以获得我的预期结果?

最佳答案

编辑

回答标题中的问题:是的,迭代器可以删除不等于特定值的项

remove() 操作只是删除当前对象。如果没有删除正确的对象,则问题在于决定何时删除的逻辑,而不是迭代器或其操作。

原始答案

如果 item.letter() 返回 Character 类型,则 item.letter().equals("C") 将始终返回错误。

如果您查看 Character.equals() 的 javadoc,它会显示:

The result is true if and only if the argument is not null and is a Character object that represents the same char value as this object.

因此,尝试将其与 String ("C") 进行比较总是会失败并删除该对象。

关于java - 迭代器可以从列表中删除不等于特定值的项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461094/

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