Java:Bidimensional配列方法/機能と類似のArrayList
-
23-09-2019 - |
質問
をしたいと思っていXY整数配列(または何種類ものを使いたいという方法"を追加","削除","は","indexOf"と類似のArrayListクラスです。
が、既存のクラスとこれらの機能は?
PS:ならないようにしたい作成るArrayListのArrayList
解決
いいえ、AFAIKがないクラス。での実施とができるかなり簡単です:
class BiDimensionalArray<T>{
Object[][] backupArray;
int lengthX;
int lengthY;
public BiDimensionalArray(int lengthX, int lengthY) {
backupArray = new Object[lengthX][lengthY];
this.lengthX = lengthX;
this.lengthY = lengthY;
}
public void set(int x, int y, T value){
backupArray[x][y] = value;
}
public T get(int x, int y){
return (T) backupArray[x][y];
}
public void addX(T[] valuesY) {
Object[][] newArray = new Object[lengthX+1][lengthY];
System.arraycopy(backupArray, 0, newArray, 0, lengthX);
newArray[lengthX]=valuesY;
backupArray = newArray;
lengthX = lengthX+1;
}
}
注意:のTypeparameter使われていないと思い、社内でもあるのでなければならないと思うか new T[][]
編集
追加addX方法のデモンストレーション実施
固定コンパイル-エラー
他のヒント
あなたの説明から、私はJAMAを使用しようとするあなたをお勧めします。
また、XYマトリックスのための独自の実装を作成することができます。ただし、これを行うために、あなたは実装から正確に何をしたいかを決定する必要があります。
あなたの行列は、固定サイズでない場合は、行列を格納するための3つのタプル形式のようなものを使用することができます。 (この表現は、あなたの行列が疎である場合にのみ効率的です)。内部的には、次の3つのArrayListを使用します。第2の列数と実際の値を格納するための第三のを格納するため、行番号を格納するための1つ。
したがって、あなたは、ランダムアクセスの効率を高めるために、列番号などにより、行番号でソートのArrayListを維持するようなものの世話をするadd(int row, int column, int value)
方法を、書きます。
この表現では、あなたはArrayListのために用意されていremove()
、contains()
のようなすべてのメソッドを実装することができます。
標準のJavaライブラリにはネイティブのマトリックス型はありません。ことで、それが1つを作成するためにはかなり簡単だ、と述べました。方法は、実装するのは簡単であり、あなたは、配列、List
または何でそれをバックアップすることができます。
public class Matrix<T> {
private final List<T> values;
private final int rows;
public Matrix(int x, int y) {
this.rows = x;
values = new ArrayList<T>(x * y);
]
public int get(int x, int y) {
return values.get(x * rows + y);
}
public boolean contains(T t) {
return values.contains(t);
}
// etc
}
チェックアウト JAMA に、それはMathworks社とNISTからです。