gpt4 book ai didi

java - 方法 next() Java 中的 NoSuchElementException

转载 作者:行者123 更新时间:2023-11-29 10:14:35 25 4
gpt4 key购买 nike

方法的目的removeDuplicate(ArrayList<Card> l)是根据属性删除重复的对象 card_value在类里面Card然后将它们添加到 ArrayList 并返回 arr。

但是我的程序返回一个错误:NoSuchElementException在线

dum.add((Card) it.next());

我不知道这里发生了什么,因为我打印了 next() 返回的对象方法,它完美地打印出来。

有人请告诉我为什么我在下面的实现中出错:

private ArrayList<Card> removeDuplicate(ArrayList<Card> l){
int end = l.size();
Set<Card> set = new HashSet<>();

for(int i = 0; i < end; i++){
set.add(l.get(i));
}
ArrayList<Card> dummy = new ArrayList<>();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
dummy.add((Card) it.next());
}

return dummy;
}

这些是覆盖方法:

@Override
public int hashCode() {
int hash = 5;
hash = 97 * hash + this.card_value;
return hash;
}

@Override
public boolean equals(Object obj) {
if (obj == this){
return true;
}
if (!(obj instanceof Card)){
return false;
}
Card other = (Card) obj;
return (this.card_value == other.card_value);
}

最佳答案

您正在调用 .next() 两次。 next() 获取迭代器中的下一个元素,但您只检查第一个元素之前的 hasNext()

改变

while(it.hasNext()){
System.out.println(it.next());
dummy.add((Card) it.next());
}

while(it.hasNext()){
Card nextCard = (Card) it.next();
System.out.println(nextCard);
dummy.add(nextCard);
}

关于java - 方法 next() Java 中的 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335077/

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