1

問題があります。配列の配列の配列を作成する必要があります。Java での動的配列の作成に関する記事をいくつか読みましたが、どの方法を選択すればよいかわかりません。

最初のものは、各配列の最大可能サイズを宣言することですint arr[][][] = new int[10000][10000][10000];が、私の場合、各配列のサイズは別の配列のサイズに依存します。つまり、各配列には最大配列のサイズがある可能性があり、この方法で配列の配列の配列を宣言すると、多くのメモリサイズが必要になります。

方法は、使用することArrayListです。しかし、私は以前にそれを使用したことがなく、ListArrayofListArraysとさらにListArrayofListArraysを宣言する構文を知りませんListArraysListArrayまた、要素としてオブジェクトが含まれているため、使用する必要があるかどうかもわかりません。また、[10000][100][20]メモリ使用量やその他の pc リソースで何が起こるかのような配列がある場合は..

3番目の問題は、最良のシナリオでは、オブジェクトやその他のデータ型変数を配列の要素として持たず、別の配列要素の他の要素にリンクしたいということです(つまりarr[z][x][y] = @arrOfStr[i])。Javaでリンクを使用したことはありませんが、リンクを配列要素として使用できるかどうか、また配列をどのように宣言すればよいかさえわかりません。

ですから、最小限の PC リソースを使用してこの問題を解決しようとして頭が壊れてしまったので、本当に助けが必要です。

どんな助けでも大歓迎です!

4

2 に答える 2

1

免責事項: リストをこれほど深く入れ子にするか、まったく入れ子にする必要があることはめったにないため、これはおそらくそもそも悪い設計です。おそらく、それをフラット化するか、 または を使用するSet必要がありMapます。私の推測ではMap、3 番目のリストにあるものから、どのような意味のある情報が得られるのでしょうか? 「3rd」に意味がある場合map.add(3, myInt)は、a を使用してアクセスすることをお勧めします。

それにもかかわらず、構文は十分に微妙なので、ここに実際のコード サンプルを示します。

しかし、私は以前にそれを使用したことがなく、ListArrays の ListArray を宣言する構文と、さらに ListArrays の ListArrays の ListArray を宣言する構文を知りません。

だからあなたの問題があります。

List<Integer> array1 = new ArrayList<>();  //java 7 only
List<List<Integer>> array2 = new ArrayList<>(); 
array2.add(array1);
// ...

などなど。

10x10x10 のリストを作成し、数値を入力するサンプル コード:

List<List<List<Integer>>> list = new ArrayList<>();
int n = 0;
for(int i = 0; i < 10; i++) {
    List<List<Integer>> list2 = new ArrayList<>();
    list.add(list2);
    for(int j = 0; j < 10; j++) {
    List<Integer> list3 = new ArrayList();
    list2.add(list3);
        for(int k = 0; k < 10; k++) {
            list3.add(n++);
        }
    }
}
于 2013-03-01T15:41:52.673 に答える
0

より明確にするには、次のようにします。

import java.awt.Point;

Point通常、グラフィカルなケースで使用され、整数のペアが必要なだけだと思います。Apache の不変ポイント クラスを使用することも、独自のクラスをロールすることもできますhashCode()

Map<Point, Integer> map = new Hashmap<>();

そこには、1 つのマップ、リストはありません。コードにリストが必要な理由はまったくなく、単に座標で物を取得したいだけだと強く思います。

于 2013-03-02T14:33:01.693 に答える