J'ai obtenu ce résultat étrange quand j'ai essayé de copier les éléments d'une autre liste/ensemble dans un HashSet. Voici le code:HashSet n'est pas vide mais ne peut pas être itéré?
public class Test {
public static void main(String args[]) {
HashSet<String> set1 = new HashSet<String>();
HashSet<String> set2 = new HashSet<String>();
set1.add("A");
set1.add("B");
set1.add("C");
Iterator<String> iter = set1.iterator();
while(iter.hasNext()) {
String elem = iter.next();
set2.add(elem); // copy the elements
System.out.println("set1: " + elem + " ");
}
System.out.println("SIZE = " + set2.size() + "; isEmpty = " + set2.isEmpty() + "; next = " + iter.hasNext());
Iterator<String> iter2 = set2.iterator();
while(iter.hasNext()) {
String elem = iter2.next();
System.out.println("set2: " + elem + " ");
}
}
Résultat:
set1: A
set1: B
set1: C
SIZE = 3; isEmpty = false; next = false
Comme vous pouvez le voir, set2 est pas vide, mais le iterator retourne rien, tout en appelant suivant(). Je suis si confus. Pourriez-vous expliquer cela?
* Mises à jour:
Merci pour toute aide! C'est une erreur stupide ... *
Typo: La dernière boucle 'while' utilise la vieille variable' iter' au lieu de 'iter2'. – rgettman
Le 'iter' que vous utilisez est à la fin, donc il n'y en a plus. –