ArrayListクラス
多次元のArrayList
配列と同様に、多次元のArrayListが作れます。
ArrayList<ArrayList<E>> list2D
= new ArrayList<ArrayList<E>>();
目次
1.書式
ジェネリクスで ArrayList<E> を入れ子にすると、多次元配列のように
多次元の ArrayListとして利用できます。
誇張気味に書くと
こんな感じだろうか。
青い部分が
入れ子になってるんスね。
2.サンプルコード
実際の使い方を見ないと
よくわからないだろう。
こんな感じだ。
//Sample11_01.java
import java.util.ArrayList;
class Sample11_01{
public static void main(String[] args){
ArrayList<ArrayList<String>> list2D
= new ArrayList<ArrayList<String>>();
//要素の追加
ArrayList<String> list;
//1行目(index 0)
list = new ArrayList<String>();
list.add("お名前 ");
list.add("おなまえ ");
list.add("勇者服");
list.add("刻印");
list.add("特記事項");
list2D.add(list);
//2行目
list = new ArrayList<String>(); //←list の初期化
list.add("結城 友奈");
list.add("ゆうき ゆうな");
list.add("桃色");
list.add("桜 ");
list.add("知的に見える伊達メガネ");
list2D.add(list);
//3行目
list = new ArrayList<String>();
list.add("東郷 美森");
list.add("とうごう みもり");
list.add("青");
list.add("朝顔");
list.add("国防仮面");
list2D.add(list);
//4行目
list = new ArrayList<String>();
list.add("犬吠埼 風");
list.add("いぬぼうざき ふう");
list.add("黄色");
list.add("オキザリス");
list.add("女子力斬り");
list2D.add(list);
//5行目
list = new ArrayList<String>();
list.add("犬吠埼 樹");
list.add("いぬぼうざき いつき");
list.add("緑");
list.add("鳴子百合");
list.add("Deathの正位置");
list2D.add(list);
//6行目
list = new ArrayList<String>();
list.add("三好 夏凜");
list.add("みよし かりん");
list.add("赤");
list.add("サツキ");
list.add("にぼっしー");
list2D.add(list);
//要素の参照
for(int i=0; i<list2D.size(); i++){
System.out.printf("%02d\t", i);
for(int j=0; j<list2D.get(i).size(); j++){//←それぞれの行の要素数
String str = list2D.get(i).get(j);
//インデントを気にせず表示
System.out.print(str + "\t");
/*インデントを合わせて表示
StringBuilder format = new StringBuilder();
format.append("%");
switch(j){
case 2:
format.append("-3");
break;
case 0:
format.append("-5");
break;
case 3:
format.append("-6");
break;
case 1:
format.append("-11");
break;
default:
break;
}
format.append("s\t");
System.out.printf(format.toString(), str);
*/
}
System.out.println();//改行
}
System.out.println("end");
}
}
コマンドライン
>cd ws
ws>javac -encoding UTF-8 Sample11_01.java
ws>java Sample11_01
00 お名前 おなまえ 勇者服 刻印 特記事項
01 結城 友奈 ゆうき ゆうな 桃色 桜 知的に見える伊達メガネ
02 東郷 美森 とうごう みもり 青 朝顔 国防仮面
03 犬吠埼 風 いぬぼうざき ふう 黄色 オキザリス 女子力斬り
04 犬吠埼 樹 いぬぼうざき いつき 緑 鳴子百合 Deathの正位置
05 三好 夏凜 みよし かりん 赤 サツキ にぼっしー
end
要素の追加
- list2D の要素は ArrayList<String>型です
- list2D.add(e) の引数も、ArrayList<String>型です
ArrayList<String> list = new ArrayList<String>(); で、
追加する値を作成してから add しています。
要素の参照
- list2D.get(i)size() は、インデックス i の 一次元ArrayListの中に追加されている要素の数です
- list2D.get(i).get(j) の戻り値は、インデックス i の 一次元ArrayListの中に追加されている j 番目の要素の値です
get(i).get(j) って
getメソッドが並んじゃっても
いいのね。
二次元のArrayList イメージ
書き方が違うだけで。
配列とほぼ同じだ。
ところで、
この方々もやはり
レンジャー関係の方たちかな?
国防的には
レンジャー関係かもしれませんが、
たぶん会長が思っているレンジャーとは
違うと思います。
3.実際の使い方
上述したサンプルは、ArrayListに格納する要素をリテラルで記述しましたが、
実際には、テキストファイルを読み込む際によく用いられます。
CSVファイルのように、スプレットシートをテキスト化しているファイルは、
二次元の ArrayListがとても便利に使えます。
ArrayListは、テキストファイルを
読み込むプログラムと相性がいい。
近々に紹介しようと思う。
乞うご期待!!
お疲れ様でした。