0

異なるサイズの配列を出力するメソッドがあるとします。

使用する前に、配列参照変数を作成する必要があります。それを行う前に、配列の長さを見つける必要があります。

int[] intArray = new int[methodReturnsArray().length]

次に、intArray を methodReturnsArray() によって生成された配列に設定できます。

methodReturnsArray() を 2 回呼び出しているため、これについては少し不安を感じています。1 回目は配列の大きさを調べるためで、もう 1 回は参照変数と等しくなるように設定するためです。

メソッドを 2 回呼び出すためにリソースが浪費されているのでしょうか、それとも配列が 1 回だけ作成されるのでしょうか (サイズがわかったとき)。

編集: intArray を配列によって返されるメソッドに初期化できることはわかっています。しかし、いくつかの複雑な理由 (「methodReturnsArray」が反復ごとに異なるサイズの配列を使用してループで呼び出されるため) のために、2 回呼び出すと計算リソースが浪費されるかどうかを知る必要があります。

4

1 に答える 1

1

それは、新しい配列変数をどのように埋めるかによって異なります。

しかし、一般的なアプローチは、 method から元の配列への参照を保存するための新しいローカル変数を導入することmethodReturnsArrayです。すなわち:

int[] methodArray = methodReturnsArray();
int[] intArray = new int[methodArray.length];
...

次に、配列をコピーする最良の方法はSystem.arrayCopy(...)メソッドです。methodReturnsArrayこのアプローチはどのような場合でも機能し、メソッド内で2 回実行することを防ぎます。

于 2013-01-27T21:31:22.643 に答える