2 次元の整数配列を格納するデータ構造を探しています。リストは正しいデータ構造ですか、それとも別のものを使用する必要がありますか?
そのようなデータ構造を作成する方法と2次元配列を追加する方法について、誰かが短い例を教えてくれますか?
編集: int[11][7] 配列を格納するデータ構造が必要です。たとえば、10 個の int[11][7] 配列。
2 次元の整数配列を格納するデータ構造を探しています。リストは正しいデータ構造ですか、それとも別のものを使用する必要がありますか?
そのようなデータ構造を作成する方法と2次元配列を追加する方法について、誰かが短い例を教えてくれますか?
編集: int[11][7] 配列を格納するデータ構造が必要です。たとえば、10 個の int[11][7] 配列。
多数の配列をデータ構造に格納する必要がある場合は、データの内容を表す に配列を格納し、次にこれらを にint[][]
格納することをお勧めします。int[][]
Object
Objects
ArrayList
たとえば、これは配列の単純なObject
ラッパーですint[][]
public class 2DArray {
int[][] array;
public 2DArray(int[][] initialArray){
array = initialArray;
}
}
そして、これがあなたがそれらをどのように使用し、それらをArrayList
// create the list
ArrayList<2DArray> myList = new ArrayList<2DArray>();
// add the 2D arrays to the list
myList.add(new 2DArray(myArray1));
myList.add(new 2DArray(myArray2));
myList.add(new 2DArray(myArray3));
私の提案の理由は、あなたのint[][]
配列があなたにとって何らかの意味を持たなければならないということです. これをObject
ラッパークラスに格納することで、意味を持たせることができます。たとえば、値が座標の場合、 のCoordinates
代わりにクラスを呼び出します2DArray
。したがって、よりもはるかに多くの意味を持つ をList
作成します。Coordinates
int[][][]
配列は、情報を保存する方法に関する単なるアイデアではなく、データを保存する方法の実装でもあります。したがって、配列を使用する場合は、データ構造が既に選択されています。
データをデータ構造に格納する場合は、データ構造の使用方法に集中する必要があります。データを取得して格納する方法、各操作を行う頻度、処理するデータの量について考える必要があります。 . 次に、どの方法が最適でなければならないかを知り、データがメモリに常駐できるかどうかなどを把握します。
これを解決できる方法の例をいくつか挙げると、次のようになります。
これらのソリューションはすべて、どの操作を最適化することがより重要であるかに大きく依存しています。データ構造を迅速に更新することがより重要な場合もあれば、そうでない場合もあります。決定的な要因は、実際にはプログラムの残りの部分です。
したがって、2D 配列のコレクションを格納する必要があります。コレクションが固定サイズの場合は、別の次元を追加します。
int[][][] arrColl
コレクションのサイズが可変の場合は、好みの実装Collection<int[][]>
(ArrayList、LinkedList など)を使用します。
Collection<int[][]> arrColl
あなたの編集に基づいて:
List<Integer[][]>
必要なものです - これにより、任意の数の 2DInteger
配列を追加できます。これには、ボックス化とボックス化解除が含まれることに注意してください。これは、可能であれば回避する必要があります。
それで十分な場合 (必要な 2D int 配列の数が事前にわかっている場合)、int[][][]
int の 3D 配列を使用することもできます。これにはボックス化/ボックス化解除は含まれません。
サイズが固定されている場合は、int[][]
elseを使用しますList<List<Integer>>
。