ボヘミアンの答えは的を射ています。Guavaを使用している場合、考えられる代替手段はArrayTable<Integer, Integer, List<Integer>>
. ドキュメントから:
Table
2 次元配列に基づく固定サイズの実装。
テーブルの作成時に、許可された行キーと列キーを指定する必要があります。テーブルには、すべての行キーと列のペアのマッピングが常に含まれています。別の値が提供されない限り、特定の行と列に対応する値は null です。
テーブルのサイズは一定で、提供された行キーの数と提供された列キーの数の積です。remove メソッドと clear メソッドは、テーブルまたはそのビューではサポートされていません。および
メソッドを代わりに使用できますerase(java.lang.Object, java.lang.Object)
。eraseAll()
使用例を次に示します。
private static final int NUM_ROWS = 20; //for example
private static final int NUM_COLS = 20; //
private static final ArrayTable<Integer, Integer, List<Integer>> TABLE =
ArrayTable.create(
Ranges.closed(1, NUM_ROWS).asSet(DiscreteDomains.integers()),
Ranges.closed(1, NUM_COLS).asSet(DiscreteDomains.integers())
);
public static List<Integer> getGridQuareList(int row, int col) {
@Nullable List<Integer> list = TABLE.at(row, col);
if (list == null) {
list = Lists.newArrayList(); //or newLinkedList() if you insist
TABLE.set(row, col, list);
}
return list;
}