指定サイズ(実行ごとに数は可変)分固定値で埋めたListを作りたい、と思った時に普通に
int num = 5;
String[] arr = new String[num];
Arrays.fill(arr, "TEST");
List<String> lst = Arrays.asList(arr);
System.out.println(lst);
// [TEST, TEST, TEST, TEST, TEST]
だと3stepも書かなければいけないので別アプローチから
int num = 5;
List<String> lst = Arrays.asList(new String[num]);
Collections.fill(lst, "TEST");
System.out.println(lst);
// [TEST, TEST, TEST, TEST, TEST]
としても2step。
なんで1stepで書けないんだと調べていたらCollections#nCopies(int, T)
なる何このメソッド名的なメソッドが大昔(J2SE 1.2)からあって
int num = 5;
List<String> lst = Collections.nCopies(num, "TEST");
System.out.println(lst);
// [TEST, TEST, TEST, TEST, TEST]
ああ、できた、というメモ。
ちなみにCollections#nCopies(int, T)
は不変のリストを返却するので、作成したリストにさらに追加等の処理を行う場合は
int num = 5;
List<String> lst = new ArrayList<>(Collections.nCopies(num, "TEST"));
lst.add("ABC");
System.out.println(lst);
// [TEST, TEST, TEST, TEST, TEST, ABC]
とする。
※コードはjava 7で書いています