0

たくさんの配列を初期化したいのですが、配列の名前は、array12、array13、array14、......array19、array22、array23..........array99 のようなシーケンスに従います。実際には、整数を含む配列1と整数を含む配列2があり、両方の共通の整数を配列12に変換します(同様に配列2、3、4..9)。これを行う最良の方法は何ですか。LinkList、マッピング、ベクトル?? 私のプログラムはサブセット (例えば、array12) を非常に頻繁に使用していたことを覚えておいてください。

リンクリスト(または他の方法)をずっと移動する必要がないため、配列に格納するのが最善の方法だと思いました。でも書けない

    public int array12=new int[10];
    public int array13=new int[10];

さらに、i(整数)=1 および j=2 のコードの途中で、array12 にアクセスしたいと考えています。では、どうすればよいのでしょうか? ...

私は実際にこの問題を解決しようとしています。質問ページ fb の質問に対する回答ではなく、私の質問に関する回答をお願いします。自分でやりたい。

4

3 に答える 3

2

高次元の配列に入る必要があります。具体的には、3D 配列を探しているようです。名前に入るデザイン内の 2 つの整数 (つまり12in array12) は、3D 配列の最初の 2 つのインデックスである必要があります。

int[][][] array = new int[10][][];
for (int i = 0; i != 10 ; i++) {
    array[i] = new int[10][];
    for (int j = 0 ; j != 10 ; j++) {
        array[i][j] = new int[10];
    }
}

array34[i]これまでのデザインにアクセスすると、 のようになりますarray[3][4][i]

于 2013-02-23T11:59:21.260 に答える
0

これは不可能です。そのための私のアプローチは、ArrayList を作成し、動的に作成する各配列を ArrayList の正しい場所に追加することです。

コードのサンプルを次に示します。

ArrayList<int[]> listOfArrays = new ArrayList<int[]>(); // Creates a list of arrays.

int[] someArrayFromListOfArrays = listOfArrays.get(index); // Gets an array from arraylist

listOfArrays.add(new int[]); // Adds a new array to the collection

listOfArrays.add(index, new int[]); // This will insert an array into a specified location in the list

これはあなたのニーズを満たすはずです。

これがArrayListの仕様です。

それが役に立てば幸い

于 2013-02-23T12:01:45.943 に答える
0

マップを使用する必要があります-(簡単に)動的に名前を付けることはできません:

public final Map<Stiring, Integer[]> myMap = new HashMap<>(){
  {
    put("array1", new Integer[10]);
    put("array2", new Integer[10]);
    put("array3", new Integer[10]);
    ...more arrays
  }
};

上記のように、匿名クラスとインスタンス初期化子のトリックを使用して、これらの配列をマップに配置できます。

その後、次を使用して配列を参照できますMap.get

final Integer[] myArray = myMap.get("array1");

編集

@ twain249 のコメントによると、ループを使用してマップにデータを入力できます。

public final Map<Stiring, Integer[]> myMap = new HashMap<>(){
  {
    for(int i=0;i<someNumber;++i) {
      for(int j=0;j<someOtherNumber;++j) {
        put("array" + i + "" + j, new Integer[10]);
      }
    }
  }
};
于 2013-02-23T11:58:59.333 に答える