web-dev-qa-db-ja.com

あるアレイから別のアレイにコピーする最良の方法

次のコードを実行しても、何もコピーされません-何が間違っていますか?

また、これはあるアレイから別のアレイにデータをコピーするための最良/最も効率的な方法ですか?

public class A {
    public static void main(String args[]) {
        int a[] = { 1, 2, 3, 4, 5, 6 };
        int b[] = new int[a.length];

        for (int i = 0; i < a.length; i++) {
            a[i] = b[i];
        }
    }
}
15
hans

あなたの課題は後方にあると思います:

a[i] = b[i];

する必要があります:

b[i] = a[i];

18
eldarerathis

多くの解決策があります。

_b = Arrays.copyOf(a, a.length);
_

新しい配列を割り当て、aの要素をコピーして、新しい配列を返します。

または

_b = new int[a.length];
System.arraycopy(a, 0, b, 0, b.length);
_

これは、ソース配列の内容を、自分で割り当てた宛先配列にコピーします。

または

_b = a.clone();
_

Arrays.copyOf()と非常によく似ています。 このスレッド を参照してください。

または、ループ内の割り当ての方向を逆にした場合は、投稿したもの。

84
Ted Hopp

Arrays.copyOf my friendを使用します。

8
Amir Raminfar