【问题标题】:how do you create a variable number of arrayLists with a variable number of items within the list?你如何创建可变数量的arrayLists,列表中的项目数量可变?
【发布时间】:2012-01-14 03:09:22
【问题描述】:

我正在尝试生成可变数量的arrayLists,列表中的项目数量可变。这意味着我不能使用数组代替arrayList。

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

 label[i]=new JLabel();

arrayList 可以这样吗?

我不能放我的代码,因为它太长了,但我会给你一个大致的想法:在一个 txt 中,有多个对象,在这种情况下,部队:长弓手,武装人员,骑士......每个 1 共享相同的统计信息 (ArrayLists),但每个都有不同的值。我拥有它,以便一旦 bufferedReader 完成一个部队,它会将所有数组列表发送到另一个类,并继续读取和覆盖旧部队统计信息(它们现在存储在不同的类中)。问题是,其他班级如何区分统计数据?如果部队类型的数量是恒定的,这将很容易,但事实并非如此。那么我该怎么做呢?

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

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);

}

我如何给部队类提供数组列表而不在部队类中重写它们?

【问题讨论】:

  • 不,我不能,有一个属性叫做武器,部队可以拥有任意数量的武器,即剑、斧、斧……

标签: java arraylist


【解决方案1】:
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 中递归迭代。

【讨论】:

  • 我添加了迭代部分和示例Item方法。
【解决方案2】:

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

ArrayList<ArrayList<Object>>

【讨论】:

  • cengiz 说了同样的话,但更详细,给了他支票,对不起。不过我投了你一票。
【解决方案3】:

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

您可以考虑使用MapArrayLists:

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);

【讨论】:

  • 我认为你不明白我的问题。问题是每个统计数据也是未知的(连同其他变量),因此,可能有 10 个部队拥有 0-100 种不同的武器,在程序的后期,我必须以某种方式将每个部队链接到那里武器,但不知道怎么做。
【解决方案4】:

我只是用了一个二维数组array[][]

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 2017-10-07
    • 2022-11-23
    相关资源
    最近更新 更多