3

これが私の場合です。私が取り組んでいる 3D プロジェクトのマトリックス バッファを作成したいと思います。

Stack Overflow の多くの人がこのようなことを提案しています

ArrayList<ArrayList<object>>

add(i,object)ただし、固定サイズのマトリックスが必要であり、操作の複雑さなどの影響を認識しているため、この構造は問題を引き起こしています。一方、マトリックスの最後のネストされたレベルは可変サイズである必要があるため、オブジェクトが同じ位置にある場合は、それ自体をスタックに追加するだけです。

4

2 に答える 2

2

可変長の 3 次元の行列が必要な場合は、なぜ ArrayList[][] を使用しないのですか?

明らかに、一般的なマトリックスをインスタンス化することはできませんが、次のように生の型からオブジェクトにキャストできます (それが必要であると仮定します)。

ArrayList<Object>[][] box = (ArrayList<Object>[][])new ArrayList[length][width];

これにより、可変長の 3 次元の固定サイズの行列が生成されます。ただし、最初はマトリックス全体が null で埋められるため、忘れずにマトリックスを ArrayList で埋めてください。

于 2013-06-22T03:47:13.033 に答える
1

可変長の 3 次元は、さまざまなコレクションで処理できます。あなたの 3 次元が真にスタック (またはキュー/デキュー) のように機能LinkedListする場合、コレクションの前/後ろからオブジェクトを追加および削除できる速度のために、私はそれを処理するために使用します。

タイプのリストの 2D マトリックスを作成するには、次のようにE記述できます。

LinkedList<E>[][] matrix = new LinkedList[length][width];

その直後に、null ポインターの問題を防ぐために、すべてのリストを次のようにインスタンス化することをお勧めします。

for(int i = 0; i < matrix.length; i++)
    for(int j = 0; j < matrix[0].length; j++)
        matrix[i][j] = new LinkedList<>();

Java 7 を使用していると仮定しました。そうでない場合は、E各要素をインスタンス化するときに型 ( ) を山かっこに入れます。これがお役に立てば幸いです。コーディングを楽しんでください。=)

于 2013-06-22T04:05:44.700 に答える