Целью метода removeDuplicate(ArrayList<Card> l)
является удаление дублированного объекта на основе атрибута card_value
в классе Card
, а затем его добавление в ArrayList и возврат arr.NoSuchElementException в методе next() Java
Но моя программа возвращает ошибку: 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);
}