公式アカウントからの投稿が始まります

javaにおいて、長さの異なる配列を既存の変数に代入することは問題ないでしょうか
例えば、以下のようなコードは、問題なく動作するようですが、
個人的に長さが変わる配列を使うコードを見ない(ArrayListが使われる)ので、
このようなコードはメモリ管理上の問題等あるのかなと考えました。

import java.util.Arrays;

public class Main {
public static void main(String[] args) throws Exception {
int[] array = {1,2,3};
array = concat(array, 4, 5);
for(int i=0;i<3;i++){
array = concat(array, 6 + i);
}
System.out.println(Arrays.toString(array)); //-> [1, 2, 3, 4, 5, 6, 7, 8]
}
public static int[] concat(int[] array, int... values){
int[] result = new int[array.length + values.length];
for(int i=0;i<result.length;i++){
result[i] = i<array.length? array[i]: values[i - array.length];
}
return result;
}
}

どなたかお教えください。

A 回答 (2件)

「メモリ管理上の問題等」というのが具体的にどのような問題を指しているのかわかりませんが, 中の人の作業が増えるだけでコードとしては問題ありません.



X というクラスに対して
X obj = new X(3);
obj = new X(5);
などとやっているのと本質的には同じですから.
    • good
    • 0

別に間違ってはいませんが、ArrayzList を使った方がずっと簡単


簡単です。また、長さが変わる度に全コピーでは
効率が悪いでしょうね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!