use*_*460 44 java iteration arraylist object
举个例子:
假设我有班级电话Gun
.我有另一个班级电话Bullet
.
Class Gun
有一个ArrayList Bullet
.
迭代通过Arraylist ...而Gun
不是这样做:
ArrayList<Gun> gunList = new ArrayList<Gun>();
for (int x=0; x<gunList.size(); x++)
System.out.println(gunList.get(x));
Run Code Online (Sandbox Code Playgroud)
我们可以简单地遍历ArrayList Gun
:
for (Gun g: gunList) System.out.println(g);
Run Code Online (Sandbox Code Playgroud)
现在,我想迭代并打印出Bullet
我的第三个Gun
对象:
for (int x=0; x<gunList.get(2).getBullet().size(); x++) //getBullet is just an accessor method to return the arrayList of Bullet
System.out.println(gunList.get(2).getBullet().get(x));
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如何使用ArrayList迭代打印输出枪对象列表,而不是使用传统的for-loop?
unh*_*ler 43
您想要遵循与以前相同的模式:
for (Type curInstance: CollectionOf<Type>) {
// use currInstance
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将是:
for (Bullet bullet : gunList.get(2).getBullet()) {
System.out.println(bullet);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
好吧,他编辑了他的帖子.
如果Object继承了Iterable,则可以使用for-each循环:
for(Object object : objectListVar) {
//code here
}
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下,如果你想更新你的枪支和他们的子弹:
for(Gun g : guns) {
//invoke any methods of each gun
ArrayList<Bullet> bullets = g.getBullets()
for(Bullet b : bullets) {
System.out.println("X: " + b.getX() + ", Y: " + b.getY());
//update, check for collisions, etc
}
}
Run Code Online (Sandbox Code Playgroud)
首先得到你的第三个枪对象:
Gun g = gunList.get(2);
Run Code Online (Sandbox Code Playgroud)
然后迭过第三枪的子弹:
ArrayList<Bullet> bullets = g.getBullets();
for(Bullet b : bullets) {
//necessary code here
}
Run Code Online (Sandbox Code Playgroud)
小智 6
使用Java8时,它将更容易,只有一个单行.
gunList.get(2).getBullets().forEach(n -> System.out.println(n));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
230204 次 |
最近记录: |