首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在集合集上迭代

在集合集上迭代
EN

Stack Overflow用户
提问于 2013-07-26 14:18:03
回答 4查看 1.7K关注 0票数 5

我正在尝试编写一个程序来迭代一组集合。在下面的示例代码中,我得到了一个错误,说明iter.next()的类型是对象,而不是一组字符串。我还有其他一些更神秘的问题,比如迭代一组集合。有什么建议吗?

代码语言:javascript
复制
            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());
            }   

具有相同设置的相关问题(减去循环)。

下面的代码片段将产生最后的输出,其中包括tildes。但是我不想在我走的时候改变allAnimals!如何在不影响较大集(allAnimals)的情况下编辑扩展。

代码语言:javascript
复制
 for (Set<String> extension : allAnimals) 
                {
                    System.out.println("Set size: " + extension.size());
                    extension.add("~");     
                    System.out.println(extension);
                }   

                System.out.println(allAnimals);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-26 14:22:18

但是,allAnimals变量的类型是Set<Set<String>>,但是当您询问它的Iterator时,您会“忘记”类型信息。根据编译器,迭代器只包含Object

代码语言:javascript
复制
Iterator<Set<String>> iter = allAnimals.iterator();

一切都会好起来的。

票数 6
EN

Stack Overflow用户

发布于 2013-07-26 14:25:54

使用增强的for循环遍历集合,比使用迭代器更容易:

代码语言:javascript
复制
for (Set<String> names : allAnimals) {
    System.out.println(names.size());
}

例如,遍历所有动物的名字:

代码语言:javascript
复制
for (Set<String> names : allAnimals) {
    for (String name : names) {
        System.out.println(name);
    }
}
票数 4
EN

Stack Overflow用户

发布于 2013-07-26 14:28:48

您没有提到定义迭代器的type。因此,就它而言,它期望一个对象作为下一个对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17883812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档