5

我想打印存储在 TreeSet 中的对象的实例变量。

因此,给定一个具有三个实例变量的对象,我想遍历 TreeSet 中的对象并打印它们的 ivars,但是:

while ( iter.hasNext() )
{
  System.out.println( iter.next().getIvar1 );
  System.out.println( iter.next().getIvar2 );
}

让我得到第一个对象的 ivar1 和第二个对象的 ivar2。通过我的所有搜索,我发现在将迭代器移动到下一个对象之前无法打印一个对象的所有 ivars,例如:

while ( iter.hasNext() )
{
  System.out.println( iter.hasNext().getIvar1() );
  System.out.println( iter.getIvar2 );
  System.out.println( iter.getIvar3 );
  System.out.println( iter.hasNext().getIvar1() );
  ....
}

关于如何实施的任何想法?

提前致谢!=)

4

2 回答 2

6

使用增强的 for 循环

for (Element element : set) {
    System.out.println(element.getIvar1());
    System.out.println(element.getIvar2());
}

在内部,它只是一个迭代器——但它省去了手动调用next()and的麻烦hasNext()

于 2012-05-13T15:01:47.970 回答
1

不要一直iter.next()在循环内调用。只调用一次。每次调用 时Iterator.next(),它都会将迭代器推进到迭代中的下一个元素。

while ( iter.hasNext() )
{
    Foo element = iter.next();
  System.out.println( element.getIvar1 );
  System.out.println( element.getIvar2 );
}
于 2012-05-13T14:58:03.780 回答