Java 如何创建数量可变的ArrayList和列表中数量可变的项目?

Java 如何创建数量可变的ArrayList和列表中数量可变的项目?,java,arraylist,Java,Arraylist,我试图生成数量可变的ArrayList,列表中的项目数量可变。这意味着我不能用数组代替arrayList 在数组中生成JLabel时,使用for循环并说: label[i]=new JLabel(); 这对arrayList是可能的吗 我不能把我的代码放出来,因为它太长了,但我会给你一个大概的想法:在一个txt中,有多个对象,在这种情况下,军队:长弓人,战士,骑士。。。每个1共享相同的统计信息(ArrayList),但每个1的值不同。我这样做是为了,一旦bufferedReader处理完一个

我试图生成数量可变的ArrayList,列表中的项目数量可变。这意味着我不能用数组代替arrayList

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

 label[i]=new JLabel();
这对arrayList是可能的吗

我不能把我的代码放出来,因为它太长了,但我会给你一个大概的想法:在一个txt中,有多个对象,在这种情况下,军队:长弓人,战士,骑士。。。每个1共享相同的统计信息(ArrayList),但每个1的值不同。我这样做是为了,一旦bufferedReader处理完一个团队,它就会将所有ArrayList发送到另一个类,并继续读取和覆盖旧的团队统计数据(它们现在存储在不同的类中)。问题是,另一个类如何区分统计数据?如果部队类型的数量是恒定的,这将很容易,但事实并非如此。那我该怎么做呢

编辑:以下是一些源代码:

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

}
public void trouploaded(ArrayList王国、ArrayList领主、ArrayList部队、ArrayList、troopAmount、ArrayList武器、ArrayList动物){
System.out.println(王国);
System.out.println(主);
系统输出打印(部队);
系统输出打印LN(troopAmount);
系统输出打印LN(武器);
系统输出打印(动物);
}

如何在不将ArrayList过度写入Force类的情况下为Force类提供ArrayList?

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

您可以考虑使用<代码>图<代码> >代码> ARARYLIST/<代码>:< /P>
Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();

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

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

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

ArrayList<ArrayList<Object>>
ArrayList
导入java.util.ArrayList;
导入java.util.List;
类项目{
私名;
公共字符串getName(){
返回名称;
}
私有void集合名(字符串名){
this.name=名称;
}
公共类项目管理器{
公共静态列表megaList;
公共静态void main(字符串参数){
megaList=新的ArrayList();
ArrayList someItems=新建ArrayList();
添加(新项());
添加(新项());
megaList.add(某些项);
用于(ArrayList:megaList){
用于(项目:列表){
字符串nameOfItem=item.getName();
}
}
}

然后,您可以在megaList中进行迭代,并在someItems中进行递归迭代。

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

我想您不理解我的问题。问题是每个统计数据(以及其他变量)也是未知的,因此,可能有10支部队拥有0-100种不同的武器,在以后的计划中,我将不得不以某种方式将每支部队与这些武器联系起来,但不知道如何联系。森吉兹说了完全相同的话,但更详细地说,给了他支票,对不起。我投票给了你。不,我不能,有一个叫做武器的统计数据,部队可以拥有尽可能多的武器如他所愿,即剑、斧、polaxe…我添加了迭代部分和示例项方法。
ArrayList<ArrayList<Object>>
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();
            }
        }
    }