/ / ArrayListsを含む2次元配列を作成する方法を教えてください。 - java、配列、アレイリスト、libgdx

ArrayListsを含む2次元配列を作成するにはどうすればよいですか? - java、配列、arraylist、libgdx

ArrayListsを含む2次元配列を作成する方法このようなもの :

ArrayList<Character>[][] myArray = new ArrayList<Character>[][];

そして、次のようにしても問題ありません。

いくつかの文字の位置を比較する必要があります私の地図での建物の位置と。複数の建物が同じタイルに属することができますが、1つはキャラクターの前に描かれ、もう1つは彼の後ろに描かれます。この比較は、すべてのキャラクターに対して、ゲーム中常に行われている必要があります。

それぞれの文字の配列を更新しようとしていますキャラクターがタイルからタイルへ移動している時間。次に、renderメソッドは、特定のタイルに含まれている文字数がある場合はその文字数を調べ、このタイル内の文字をループして建物の前面または背面に描画します。

このようなもの :

//init
ArrayList<Character>[][] arrayOfCharacters = new ArrayList<Character>[][];

//each tile in the map
for (int y = 0; y < 9; y++){
for(int x = 9-1; x >= 0; x--){
if ( arrayOfCharacters[y][x].length > 0 ){
for ( int i=0, i< arrayOfCharacters[y][x].length; i++ ){
//compare which building is in front or behind the characters
//then
characterInThisTile = index of each character in arrayOfCharacters[y][x]
spriteBatch.draw(characterInThisTile, x_pos, y_pos, tileWidth, tileHeight);
}
}

}
}

回答:

回答№1は1
ArrayList<Character>[][] arrayOfCharacters = new ArrayList[9][9];
for(int i=0;i<arrayOfCharacters.length;i++){
for(int i2=0;i2<arrayOfCharacters[i].length;i2++){
arrayOfCharacters[i][i2]=new ArrayList<Character>(20);
}
}

回答№2の場合は1

二次元配列は配列の配列です。つまり、構造は次のようになります。

[0,0][0,1][0,2][0,3] -> sub array 1
[1,0][1,1][1,2] -> sub array 2
[2,0][2,1][2,2][2,3][2,4] - sub array 3

各部分配列の要素数が同じである必要はないことに注意してください。あなたは上記の配列を作成することができます(私はあなたの型が必要に応じて変わる整数を使っています):

int[][] a = new int[3][]; // The number of sub arrays or the first argument should be defined.
// The number of elements in each sub array need not be known at compile time though

したがって、ArrayListで同じことをしなければならない場合、配列内の配列はリスト内のリストに変換されます。それで、あなたは以下のようなことをすることができました:

ArrayList<ArrayList<Integer>> arrayList = new ArrayList<ArrayList<Integer>>();

ArrayListオブジェクトは動的に展開できるので、構造は次のようになります。

Row [0] -> [0][1][2]..... // and so on
Row [1] -> [0][1][2]..... // and so on
Row [2] -> [0][1][2]..... // and so on

これに要素を入力することは入れ子にされたforループを使用して非常に同様にされるでしょう。


回答№3の場合は1

私はリストのリストを使うでしょう、それはより動的です。

List<ArrayList<Character>> list =
new ArrayList<ArrayList<Character>>();