Java : 配列の部分コピー
配列の部分コピーを行うのに、最も効率の良い方法は何かと考えていたのですが・・・
int[] src = new int[] {1,2,3,4,5}; int[] dst = new int[6]; dst[0] = 0; for (int i=0; i<src.length; ++i) { dst[i+1] = src[i]; }
みたいなのは、効率悪そうじゃないですか。せっかく配列は連続するメモリ領域に生成されるのだから、memcpyみたいに、連続する領域をごっそりコピーする方が効率的ですよね。
で、あれこれ考えていたのですが、これなんかよさそうじゃないですか?
dst[0] = 0; System.arraycopy(src, 0, dst, 1, src.length);
中の実装がどうなっているかは確認していませんけど、
System クラスによって得られる機能には、標準入力、標準出力、およびエラー出力ストリーム、外部的に定義された「プロパティ」へのアクセス、ファイルおよびライブラリのローディング方法、配列の一部をすばやくコピーするユーティリティメソッドがあります。
なんて書いてありますし。(強調は筆者による)