Java 如何使用迭代器遍历向量并找到某些对象?
我的问题是,我需要在向量内容中找到对象,以便将它们打印到面板上。但是,当我使用此代码遍历向量时,它不会到达object=it.next()行。因此,当我试图调用objects paint方法时,它给了我一个空指针,因为对象没有初始化Java 如何使用迭代器遍历向量并找到某些对象?,java,vector,nullpointerexception,iterator,Java,Vector,Nullpointerexception,Iterator,我的问题是,我需要在向量内容中找到对象,以便将它们打印到面板上。但是,当我使用此代码遍历向量时,它不会到达object=it.next()行。因此,当我试图调用objects paint方法时,它给了我一个空指针,因为对象没有初始化 public PaintingPanel(Vector contents){ this.contents = contents; Iterator it = contents.iterator(); while(it.hasNext())
public PaintingPanel(Vector contents){
this.contents = contents;
Iterator it = contents.iterator();
while(it.hasNext()){
if(it.next().equals(ball)){
ball = (Ball) it.next();
} else if (it.next().equals(bricks)){
bricks.add((Brick) it.next());
} else if (it.next().equals(paddle)){
paddle = (Paddle) it.next();
}
您正在迭代每个if/else条件。最好存储检索到的对象,然后进行比较。也许是这样的:
while(it.hasNext()){
Object itObj = it.next();
if(itObj.equals(ball)){
ball = (Ball) it.next();
} else if ((itObj.equals(bricks)){
bricks.add((Brick) it.next());
} else if ((itObj.equals(paddle)){
paddle = (Paddle) it.next();
}
每次调用
.next()
时,迭代器将前进一个值。在你的循环中,你前进三次,因此吞下三个条目
改为这样做:
Object element;
while (it.hasNext()) {
element = it.next();
if (element.equals(ball)) // etc etc
}
此外,您不应使用向量
。2014年没有
使用列表
,其中X
是正确的类型
最后,如果您的问题是“它没有到达object=it.next()行”,那么您似乎还有其他问题。需要更多的代码!考虑到if
谓词的奇怪性,问题看起来甚至比这更为根本
特别是,你点击了一个NullPointerException
,而不是一个NoSuchElementException
,迭代器如果没有更多的元素可以产生,就会抛出它。回答者,请谈谈vector
和raw。。这个模式很奇怪,如果等于,为什么需要赋值