所以,简单的问题似乎让我感到困惑。我有一系列ArrayList
,因为它们需要可扩展。现在,我希望能够通过简单的for循环从每个对象中拉出第n个对象。
public ArrayList<String> name = new ArrayList<String>();
public ArrayList<Integer> stamina = new ArrayList<Integer>();
public ArrayList<Integer> heart = new ArrayList<Integer>();
public ArrayList<Integer> intel = new ArrayList<Integer>();
public ArrayList<Integer> speed = new ArrayList<Integer>();
我将在稍后的代码中添加/提取这些信息,因此我希望通过单个2D阵列可以轻松访问它。有类似的东西,
racerInfo[][] = { name, stamina, heart, intel, speed };
然后,如果我想要赛车编号为7的信息
for ( int i=0; i<=racerInfo.length - 1; i++ ) {
System.out.println(racerInfo[i][7]);
}
我如何设置racerInfo
字段?我似乎无法弄清楚正确的设置。如果你有任何更好的建议,我完全开放,因为我仍然是新的,只是试图拼凑一些有用的东西。
答案 0 :(得分:8)
你的方法有点原始,如果你有更好的架构,你就不会遇到这个问题。
您应该创建一个包含属性的racer类,而不是拥有一堆racer属性列表。
class Racer {
private String name;
private int stamina;
...
public Racer(String name) {
this.stamina = Math.random(...);
...
}
public function getStamina() {
return this.stamina;
}
}
然后你实例化你所有的赛车手
Racer racer1 = new Racer("Alice");
并将它们放在一个列表(或可能是地图)的赛车手中:
List<Racer> racers = new ArrayList<Racer>();
racers.add(racer1);
或者您可以直接添加它们,而无需先将它们分配给变量
racers.add(new Racer("Bob"));
答案 1 :(得分:0)
使racerInfo成为arrayLists的arrayList,类似这样
ArrayList<ArrayList> racerInfo = new ArrayList<ArrayList>(Arrays.asList(new ArrayList[]{name, stamina, heart, intel, speed}));