J'essaie d'écrire un programme qui itère sur un ensemble d'ensembles. Dans l'exemple de code ci-dessous, j'obtiens une erreur indiquant que iter.next() est de type objet plutôt qu'un ensemble de chaînes de caractères. J'ai également d'autres problèmes plus mystérieux avec l'itération sur des ensembles d'ensembles. Des suggestions ?
Set<String> dogs= new HashSet<String>();
dogs.add("Irish Setter");
dogs.add("Poodle");
dogs.add("Pug");
dogs.add("Beagle");
Set<String> cats = new HashSet<String>();
cats.add("Himalayan");
cats.add("Persian");
Set<Set<String>> allAnimals = new HashSet<Set<String>>();
allAnimals.add(cats);
allAnimals.add(dogs);
Iterator iter = allAnimals.iterator();
System.out.println(allAnimals.size());
while (iter.hasNext())
{
System.out.println(iter.next().size());
}
Une question connexe avec la même configuration (moins la boucle).
Le fragment de code ci-dessous produit un résultat final qui comprend des tildes. Mais je ne veux pas modifier allAnimals au fur et à mesure ! Comment puis-je modifier l'extension sans affecter l'ensemble plus large (allAnimals).
for (Set<String> extension : allAnimals)
{
System.out.println("Set size: " + extension.size());
extension.add("~");
System.out.println(extension);
}
System.out.println(allAnimals);