多次元リストを静的に初期化するにはどうすればよいですか?
これは機能します:
List<List<Integer>> list = new ArrayList<List<Integer>>();
しかし、(1,2,3)、(4,5,6)、(7,8,9)のような静的リストでリストを初期化したいと思います。
ヘルパーメソッドを作成すると、コードは少し見栄えが良くなります。例えば
public class Collections {
public static <T> List<T> asList(T ... items) {
List<T> list = new ArrayList<T>();
for (T item : items) {
list.add(item);
}
return list;
}
}
その後、(静的インポートを使用して)実行できます
List<List<Integer>> list = asList(
asList(1,2,3),
asList(4,5,6),
asList(7,8,9),
);
Arrays.asList()を使用しない理由
Arrays.asList()は、Java.util.Arrays.ArrayList型のクラスを返します(これはArraysの内部クラスです)。私が見つけた問題は、Java.lang.ArrayListを使用していると考えるのは非常に簡単ですが、それらのインターフェースは非常に、非常に異なるということです。
あなたはこのようにそれを行うことができます:
import static Java.util.Arrays.*;
.。
List<List<Integer>> list = asList(
asList( 1, 2, 3 ),
asList( 4, 5, 6 ),
asList( 6, 7, 8 ) );
これを行うには、コードに静的ブロックを追加します。
private static List<List<Integer>> list = new ArrayList<List<Integer>>();
static {
List<Integer> innerList = new ArrayList<Integer>(3);
innerList.add(1);
innerList.add(2);
innerList.add(3);
list.add(innerList);
//repeat
}