電子書籍の厳選無料作品が豊富!

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

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

この回答への補足

ご回答ありがとうございます。
この方法を使用した場合。
取り出すときは、
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))+
}
}
といった感じで取り出せばいいのでしょうか?

補足日時:2002/10/29 14:00
    • good
    • 0

No.4の補足での質問に対する回答ですが、概ねその通りです。


ただ、arrayは
ArrayList array;
と宣言しておけばよく、newするのは意味がありません。
    • good
    • 0

行は増減するが、列が増減しないんでしたら


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

>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/inde …

この回答への補足

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

補足日時:2002/10/29 13:13
    • good
    • 0

おはようございます。



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

この回答への補足

たとえば、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が必要で、実用的ではないので、
効率的な方法はないでしょうか?

補足日時:2002/10/29 11:57
    • good
    • 0

2次元リスト構造って、木構造みたいなやつですか?


それとも2次元配列のこと?

この回答への補足

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

補足日時:2002/10/29 11:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!