- ベストアンサー
2次元リスト
2次元のリスト構造でデータを格納したいのですが、2次元目のリストを複数作らなければならくて、その分の変数名をユニークにするのが、大変なのですが、なにかいい方法はないでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ? 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); } }
その他の回答 (5)
- ranx
- ベストアンサー率24% (357/1463)
No.4の補足での質問に対する回答ですが、概ねその通りです。 ただ、arrayは ArrayList array; と宣言しておけばよく、newするのは意味がありません。
- sasadora
- ベストアンサー率68% (59/86)
行は増減するが、列が増減しないんでしたら 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)
>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で検索してみてください。
補足
Vectorを使用しても、行数分Vectorが必要だと思うのですが、他にいい方法があるのでしょうか? 例をあげていただくとありがたいです。
- hameggs
- ベストアンサー率38% (8/21)
おはようございます。 いまいち質問の意味がわかりません。 できればテストデータなどを踏まえて説明 していただければ解答できると思います。
補足
たとえば、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)
2次元リスト構造って、木構造みたいなやつですか? それとも2次元配列のこと?
補足
配列というか、例えば、ArrayListを2つ使ったりして、2次元のリスト構造を実現したいのですが、2次元目のListが複数必要になるので、どうしたらいいですか?
補足
ご回答ありがとうございます。 この方法を使用した場合。 取り出すときは、 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))+ } } といった感じで取り出せばいいのでしょうか?