2012-01-14 6 views
1

私は、リスト内の項目の数が可変な変数arrayListsを生成しようとしています。つまり、arrayListの代わりに配列を使用することはできません。リスト内に可変数の項目を持つ可変数のarrayListsを作成するにはどうすればよいですか?

配列内のJLabelを生成するには、forループを使用して、言う:

label[i]=new JLabel(); 

は、ArrayListのために、このことは可能ですか?

長いと思うので私はコードを書くことができませんが、一般的な考え方を教えてください:txtの中に、複数のオブジェクト、この場合、軍隊:longbowman、人間の腕、騎士..各1は同じ統計情報(ArrayLists)を共有しますが、それぞれに異なる値を持ちます。バッファリングされたリーダーが一度軍隊で終わると、すべての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); 

} 

私はどのように与えますか軍隊クラスにそれらを書き込むことなく、軍隊をクラス分けしますか?

+0

2次元配列の配列を使用していない私はできない、武器と呼ばれるSTATがあり、彼が望んでいるとして、部隊は、できるだけ多くの武器を持つことができ、すなわち、剣、斧、polaxe .. – Russell

答えて

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

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

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

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

、その後の呼び出し:

あなたはMapArrayListのSを使用して検討すること

次にmegaListの中で反復処理を行い、someItemsの中で反復的に反復処理を行うことができます。

+0

反復部分とサンプルItemメソッドを追加しました。 –

0

IIUC、これらのパラメータをすべてtroopLoaded()メソッドに渡しませんか?私が正しくあなたの質問を理解していれば、使用することができます

trooper.troopLoaded(map); 
+0

私はあなたが私の質問を理解しているとは思わない。問題は、各統計値も(他の変数と一緒に)未知であるため、0〜100の異なる武器を持つ10人の兵士がいる可能性があり、後でプログラムでは、私は何とか各部隊をそこにリンクさせる必要がありますどのように武器がわからない。 – Russell

1

ArrayList<ArrayList<Object>> 
+0

チェンジズは、正確に何かを言ったが、詳細には、彼に小切手を渡した、申し訳ありません。私はあなたに投票しました。 – Russell

関連する問題