首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用迭代器的Java fire bullet

使用迭代器的Java fire bullet
EN

Stack Overflow用户
提问于 2014-04-04 01:23:29
回答 3查看 91关注 0票数 0

我不知道我是否做对了,但我有一些类似的东西:

代码语言:javascript
复制
ArrayList al = new ArrayList();
Iterator itr;

如果我按空格键,fire将变为true。

代码语言:javascript
复制
if (fire) {
   Bullet bullet = new Bullet(ship.getX(), ship.getY(), true);
   al.add(bullet);
   itr = al.iterator();
   fire = false;
}
while(itr.hasNext()) {
//here i want my Bullet class funcion move();
// something liek itr.move();

}

这可能都是错的。但是你能给我一些建议吗?

EN

回答 3

Stack Overflow用户

发布于 2014-04-04 01:31:08

对于ArrayList,您只需要一个for循环就可以进行迭代。顺便说一句,您没有指定ArrayList包含的类型。应该是新的al = ArrayList ArrayList();

对于迭代尝试:

代码语言:javascript
复制
for(int i = 0; i < al.size(); i++)
{
  ....
}

类型安全很重要!如果你使用类型安全声明,那么你不需要转换返回值。

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 01:33:08

要从迭代器中获取值,您应该使用next()方法。此方法返回迭代器指向的值,并将迭代器移动到容器中的下一个元素。

代码语言:javascript
复制
while(itr.hasNext()) {
    Bullet bullet = (Bullet) itr.next();
    bullet.move();
}

从Java1.5开始,您可以以更优雅的方式遍历集合(这与上面的功能相同,但您不必担心迭代器):

代码语言:javascript
复制
for(Bullet bullet : al) { // Assuming you use generic ArrayList<Bullet>
    bullet.move();
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-04 14:21:43

基本上,您的第一种方法最适合这种情况,在迭代器上调用delete允许您在与移动相同的过程中从集合中删除项目符号。

代码语言:javascript
复制
final ArrayList test = new ArrayList(Arrays.asList("test", "Foo", "Bar"));

final Iterator iterator = test.iterator();

while (iterator.hasNext()) {
    final String next = iterator.next();
//Some action on Your bullet
    System.out.println(next);
//check if you want to remove it
    if ("Bar".equals(next)) {
        iterator.remove();
    }
    System.out.println(test);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22844747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档