当前位置:  开发笔记 > 编程语言 > 正文

我如何使用迭代器通过Vector并找到某些对象?

如何解决《我如何使用迭代器通过Vector并找到某些对象?》经验,为你挑选了1个好方法。

我的问题是我需要在Vector内容中找到对象,以便我可以将它们打印到面板.但是,当我使用此代码迭代向量时,它不会到达object = it.next()行.因此,当我尝试调用对象paint方法时,它会给我一个空指针,因为对象未初始化.

 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();
        }

fge.. 5

Iterator会快一个值,每次你打电话.next().在你的循环中,你前进三次,因此吞下三个条目!

改为:

Object element;
while (it.hasNext()) {
    element = it.next();
    if (element.equals(ball)) // etc etc
}

此外,你不应该使用Vector.不是在2014年.

使用Listwhere X是正确的类型!


最后,你似乎还有其他问题,因为你的问题是"它没有到达object = it.next()行".需要更多代码!鉴于你的if谓词的陌生感,这个问题看起来比那更基本,甚至.

特别是,如果它没有任何更多的元素要生成,你会点击NullPointerException"而不是"a NoSuchElementException这就是Iterator抛出的东西.



1> fge..:

Iterator会快一个值,每次你打电话.next().在你的循环中,你前进三次,因此吞下三个条目!

改为:

Object element;
while (it.hasNext()) {
    element = it.next();
    if (element.equals(ball)) // etc etc
}

此外,你不应该使用Vector.不是在2014年.

使用Listwhere X是正确的类型!


最后,你似乎还有其他问题,因为你的问题是"它没有到达object = it.next()行".需要更多代码!鉴于你的if谓词的陌生感,这个问题看起来比那更基本,甚至.

特别是,如果它没有任何更多的元素要生成,你会点击NullPointerException"而不是"a NoSuchElementException这就是Iterator抛出的东西.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有