迭代集合

use*_*054 5 java iterator set

我正在尝试编写一个迭代一组集的程序.在下面的示例代码中,我收到一条错误,指出iter.next()是object类型而不是一组字符串.我也有一些其他更神秘的问题,也可以迭代几组.有什么建议?

            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());
            }   
Run Code Online (Sandbox Code Playgroud)

具有相同设置的相关问题(减去循环).
下面的代码片段产生包括波浪号的最终输出.但我不想在我去的时候改变所有的动物!如何编辑扩展名而不影响较大的集合(allAnimals).

 for (Set<String> extension : allAnimals) 
                {
                    System.out.println("Set size: " + extension.size());
                    extension.add("~");     
                    System.out.println(extension);
                }   

                System.out.println(allAnimals);
Run Code Online (Sandbox Code Playgroud)

mth*_*ers 6

但是,当您要求它"忘记"类型信息时,您的allAnimals变量属于类型.根据编译器,你的迭代器只包含s.改变你在哪里得到的行到此Set<Set<String>>IteratorObjectIterator

Iterator<Set<String>> iter = allAnimals.iterator();
Run Code Online (Sandbox Code Playgroud)

一切都应该没问题.