• ベストアンサー

2次元リスト

2次元のリスト構造でデータを格納したいのですが、2次元目のリストを複数作らなければならくて、その分の変数名をユニークにするのが、大変なのですが、なにかいい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.4

こんな感じ?  ArrayList list1 = new ArrayList();  for (int i=0 ; i<m ; i++) {   ArrayList list2 = new ArrayList();   list1.add((Object)list2);   for (int j=0 ; j<n ; j++) {   String data = "データ" + (i+1);   list2.add((Object)data);   }  }

mikmik_a
質問者

補足

ご回答ありがとうございます。 この方法を使用した場合。 取り出すときは、 for(int i=0;i<list1.size();i++){ ArrayList array = new ArrayList(); array = list1.get(i); for(int j=0;j<array.size();j++){ System.out.println(array.get(j))+ } } といった感じで取り出せばいいのでしょうか?

その他の回答 (5)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.6

No.4の補足での質問に対する回答ですが、概ねその通りです。 ただ、arrayは ArrayList array; と宣言しておけばよく、newするのは意味がありません。

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.5

行は増減するが、列が増減しないんでしたら addするときに列数分の配列を格納すればよいと思います。 イメージとしてはこんな感じ。(3行4列) 格納するのはVectorでもArrayListでもいいです。 ArrayList{  {あ,い,う,え} …[0]番目の要素  {か,き,く,け} …[1]番目の要素  {さ,し,す,せ} …[2]番目の要素 } ArrayList table = new ArrayList(); table.add(new Object[]{"あ", "い", "う", "え"}); table.add(new Object[]{"か", "き", "く", "け"}); table.add(new Object[]{"さ", "し", "す", "せ"}); //(1,2)の要素"し"を取り出すとき Object[] row = (Object[])table.get(2); //入れた型でキャスト System.out.println(row[1]); //動的に10行2列のデータを作成する例 table = new ArrayList(); for (int r = 0; r < 10; r++){   row = new Object[2];   for (int c = 0; c < 2; c++){     row[c] = "(" + c + "," + r + ")";   }   table.add(row); } //動的に表示する例 for(int r = 0; r < table.size(); r++){   row = (Object[])table.get(r);   for (int c = 0; c < row.length; c++){     System.out.print(row[c]);   }   System.out.println(); }

  • po-net
  • ベストアンサー率36% (172/477)
回答No.3

>ArrayList list = new ArrayList(); >ArrayList list1 = new ArrayList(); >ArrayList list2 = new ArrayList(); >list1.add("データ1");4回 >list2.add("データ2");4回 >list.add(list1); >list.add(list2); こういうときには、配列ではなくてjava.util.Vectorを使います。 Vectorを使うと処理の途中で長さを変更できますので、こういうときには最適です。 なお、Vectorに関しては参考URLで検索してみてください。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
mikmik_a
質問者

補足

Vectorを使用しても、行数分Vectorが必要だと思うのですが、他にいい方法があるのでしょうか? 例をあげていただくとありがたいです。

  • hameggs
  • ベストアンサー率38% (8/21)
回答No.2

おはようございます。 いまいち質問の意味がわかりません。 できればテストデータなどを踏まえて説明 していただければ解答できると思います。

mikmik_a
質問者

補足

たとえば、2行4列の2次元リスト構造だと、 ArrayList list = new ArrayList(); ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); list1.add("データ1");4回 list2.add("データ2");4回 list.add(list1); list.add(list2); みたいな感じで、作成すると、 行数分、ArrayListが必要で、実用的ではないので、 効率的な方法はないでしょうか?

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

2次元リスト構造って、木構造みたいなやつですか? それとも2次元配列のこと?

mikmik_a
質問者

補足

配列というか、例えば、ArrayListを2つ使ったりして、2次元のリスト構造を実現したいのですが、2次元目のListが複数必要になるので、どうしたらいいですか?

関連するQ&A