ArrayLists数组?

时间:2014-09-10 02:03:20

标签: java arrays arraylist

所以,简单的问题似乎让我感到困惑。我有一系列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字段?我似乎无法弄清楚正确的设置。如果你有任何更好的建议,我完全开放,因为我仍然是新的,只是试图拼凑一些有用的东西。

2 个答案:

答案 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}));