如何在列表中创建具有可变数量项的可变数量的数组列表?

时间:2012-01-14 03:09:23

标签: java arraylist

我试图在列表中生成具有可变数量项目的可变数量的数组列表。这意味着我不能使用数组而不是arrayList。

在数组中生成JLabel时,使用for循环并说:

 label[i]=new JLabel();

这是否可以用于arrayList?

我无法提出我的代码,因为它很长但是我会给你一个大概的意思:在一个txt中,有多个对象,在这种情况下,是部队:长弓兵, man at arms,knight ...每个1共享相同的统计数据(ArrayLists),但每个都有不同的值。我有它,所以一旦bufferedReader完成了一个部队,它将所有的arraylists发送到另一个类,并继续阅读和覆盖旧的部队统计(他们现在存储在一个不同的类)。问题是,其他阶级如何区分统计数据?如果部队类型的数量不变,这将很容易,但是,它不是。那我怎么能这样做呢?

编辑:这里有一些源代码:

while ((text = reader.readLine()) != null) {
            StringTokenizer troops = new StringTokenizer(text, "=");
            String list = troops.nextToken();
            String value = troops.nextToken();

            else if (list.equals("Done")) {
                troop trooper=new troop();
                trooper.troopLoaded(kingdom,lord,troop,troopAmount,weapon,animal);

}

/////

部队类:

   public void troopLoaded(ArrayList<String> kingdom,ArrayList<String> lord,ArrayList<String> troop,ArrayList<String>,troopAmount,ArrayList<String> weapon,ArrayList<String> animal) {

    System.out.println(kingdom);
    System.out.println(lord);
    System.out.println(troop);
    System.out.println(troopAmount);
    System.out.println(weapon);
    System.out.println(animal);

}

如何在没有在部队班级写作的情况下给军队派遣军队?

4 个答案:

答案 0 :(得分:2)

import java.util.ArrayList;
import java.util.List;

class Item {
    private name;

    public String getName() {
        return name;
    }

    private void setName(String name) {
        this.name = name;
    }


public class ItemManager {

    public static List<ArrayList<Item>> megaList;
    public static void main(String args) {

        megaList = new ArrayList<ArrayList<Item>>();

        ArrayList<Item> someItems = new ArrayList<Item>();
        someItems.add(new Item());
        someItems.add(new Item());

        megaList.add(someItems);

        for(ArrayList<Item> list : megaList ) {
            for (Item item : list) {
                String nameOfItem = item.getName();
            }
        }
    }

然后你可以在megaList里面迭代并在someItems里面递归迭代。

答案 1 :(得分:1)

如果我正确理解您的问题,您可以使用:

ArrayList<ArrayList<Object>>

答案 2 :(得分:0)

IIUC,您想要的是不是将所有这些参数传递给troopLoaded()方法?

您可以考虑使用Map ArrayList s:

Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();

map.put("kingdom", new ArrayList<String());
...

map.put("animal", new ArrayList<String());

然后打电话:

trooper.troopLoaded(map);

答案 3 :(得分:0)

我刚使用了2d数组[] []