怎样遍历Collection中的集合如Set

当集合中还有集合时,应该怎样遍历呢?这个问题让我琢磨了一个下午,最后终于有了答案。 java

当咱们使用以下的方法遍历集合时就会陷入到死循环中,一直打印下去,为何呢?由于每执行完一次打印,从新执行while语句时又会建立新的iterator,因此这样的写法是错误的。 spa


Collection<Set<String>> col = new ArrayList<HashSet<String>>;
while(col.iterator.next.iterator.hasNext()){
    System.out.println(col.iterator.next.iterator.next());
}

正确的遍历方法是先获取iterator的引用,而后经过这个引用进行遍历。 code

Iterator it = col.iterator();
while (it.hasNext()) {
   Set<String> set = (Set<String>) it.next();
   Iterator i = set.iterator();
   while (i.hasNext()) {
       System.out.println(i.next());
   }
}
这样才可以正确地打印。
相关文章
相关标签/搜索