Java 树的自底向上层次顺序 Iterator itr=s.Iterator(); while(itr.hasNext()) { if(itr.next()==null) System.out.println(); 其他的 { ArrayList al2=(ArrayList)itr.next(); 对于(inti=0;i
如果没有看到您正在处理的输入,很难确定,但是代码中的一个问题是使用Java 树的自底向上层次顺序 Iterator itr=s.Iterator(); while(itr.hasNext()) { if(itr.next()==null) System.out.println(); 其他的 { ArrayList al2=(ArrayList)itr.next(); 对于(inti=0;i,java,casting,Java,Casting,如果没有看到您正在处理的输入,很难确定,但是代码中的一个问题是使用itr.next()。该方法将返回列表中的下一项并使迭代器前进。因此,由于每次循环调用两次,因此每次循环都从列表中提取两项。您应该重新组织代码,以便每次循环只调用一次next(): Iterator itr=s.iterator(); while(itr.hasNext()) { if(itr.next()==null) System.out.println();
itr.next()
。该方法将返回列表中的下一项并使迭代器前进。因此,由于每次循环调用两次,因此每次循环都从列表中提取两项。您应该重新组织代码,以便每次循环只调用一次next()
:
Iterator itr=s.iterator();
while(itr.hasNext())
{
if(itr.next()==null)
System.out.println();
else
{
ArrayList al2=(ArrayList)itr.next();
for(int i=0;i<al2.size();i++)
System.out.println(al2.get(i));
}
}
}//function close
如果不知道要迭代的ArrayList是什么,则无法确定。很可能没有要迭代的ArrayList,或者所有ArrayList都是空的(size=0),因此永远不会到达print语句。
while (itr.hasNext()) {
ArrayList al2=(ArrayList)itr.next();
if (al2 == null) {
System.out.println("List contained null value");
}
for (Object obj: al2) {
System.out.println("List entry: " + obj);
}
}