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

问题描述:

我试图用可变数目的项目在列表中生成可变数目的arrayLists。这意味着我不能使用数组而不是arrayList。如何在列表中创建可变数量的数组项目列表中的可变数量的项目?

当在一个阵列产生一个JLabel,您使用的for循环,并说:

label[i]=new JLabel(); 

这是可能的ArrayList?

我不能忍受我的代码,因为它很长,但我会给你的一般想法:在txt中,有多个对象,在这种情况下,部队:longbowman,武器的人,骑士.. 。每个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); 

} 

怎么给没有过多地将队列课程写入队伍课程的队伍?

+0

不,我不能,有一个叫做武器统计,因为他想要的,即剑,斧,polaxe队伍能有尽可能多的武器.. – Russell 2012-01-14 03:31:04

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内递归迭代。

+0

我添加了迭代部分和示例Item方法。 – 2012-01-14 03:34:49

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

您可以考虑使用ArrayListMap 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); 
+0

我不认为你理解我的问题。问题在于每个属性也是未知的(以及其他变量),因此,可能有10名拥有0-100种不同武器的部队,然后在该程序中,我必须以某种方式将每个部队连接到那里武器,但不知道如何。 – Russell 2012-01-14 03:19:32

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

ArrayList<ArrayList<Object>> 
+0

cengiz说完全相同,但更详细的,给他支票,对不起。我虽然投票给你。 – Russell 2012-01-14 03:29:40

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