質問

をしたいと思ってい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からです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top