2012-01-14 110 views
1

我試圖用可變數目的項目在列表中生成可變數目的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

回答

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內遞歸迭代。

+0

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

0

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

1

如果我正確理解你的問題,你可以使用:

ArrayList<ArrayList<Object>> 
+0

cengiz說完全相同,但更詳細的,給他支票,對不起。我雖然投票給你。 – Russell 2012-01-14 03:29:40

0

我只是用一個二維數組,數組[] []

相關問題