2016-09-19 11 views
0

、私は単純に言う例外を提示しています2次元のリストの値を設定しようとしている: Exception in thread "LWJGL Application" java.lang.UnsupportedOperationExceptionにUnsupportedOperationExceptionが次のコードを実行している場合

// Declare the main List for this situation 
List<List<Integer>> grid = new ArrayList<List<Integer>>(); 

// Initialize each value as 0, making a list of 0s, the length equal to COLUMNS, in a list of Lists, where the length of that is ROWS 
// ROWS and COLUMNS have been defined as constants beforehand. Right now they are both equal to 8 
for (int row = 0; row < ROWS; row++) { 
    grid.add(Collections.nCopies(COLUMNS, 0)); 
} 

// Now set the first element of the first sub-List 
grid.get(0).set(0, Integer.valueOf(2)); 

要素に設定されている私は実際にやろうとしていますプログラムのどこかで計算される特定の値。問題を調査した後、私はこれらの行に絞り込まれ、例外をスローするように要素を変更しようとするあらゆる価値があることがわかりました。私は実際の値を他のところで計算された数値リテラル2とサンプルに何があるのか​​試しました。私が試したすべてがUnsupportedOperationExceptionをスローします。私は何をすべきか?

答えて

1

Collections.nCopies(...)は、ドキュメントごとに不変のリストを返します。これらのリストのいずれかにset(...)を呼び出すと、UnsupportedOperationExceptionになります。

次のようにコードを変更してみてください:

for (int row = 0; row < ROWS; row++) { 
    grid.add(new ArrayList<>(Collections.nCopies(COLUMNS, 0))); 
} 
関連する問題