Javaでは非プリミティブ型の配列をコピーするためにどのような方法がありますか?パフォーマンスの問題はどうですか?Java:非プリミティブ型の配列をコピーする
答えて
古い学校の方法だった:
public static void java.lang.System.arraycopy(Object src, int srcPos,
Object dest, int destPos, int length)
これは別の既存のアレイからcopys。 コピーをの配列にすると仮定して、新しい配列を自分で割り当てる必要があります。
JDK 6以降では、java.util.Arrays
クラスには、新しいサイズの配列のコピーを作成するための数多くのcopyOf
メソッドがあります。関連しているものである:
public static <T> T[] copyOf(T[] original, int newLength)
と
public static <T,U> T[] copyOf(U[] original, int newLength,
Class<? extends T[]> newType)
この最初のものは、元の配列のタイプを使用してコピーを作成し、2つ目は、異なる配列型でコピーを行います。
arraycopyと3つの引数copyOfは、元の(ソース)配列内の各要素の型をターゲット配列型と照合する必要があることに注意してください。両方とも型の例外を投げることができます。 2つの引数copyOf(理論上は少なくとも)は型チェックを行う必要がないので、(理論上)より速くすべきです。実際には、相対的なパフォーマンスは実装に依存します。たとえば、arraycopy
には、JVMによって特別な処理が施されることがよくあります。
int [] array = {1、2、3};と思った人のために; int [] copy = Arrays.copyOf(array、array.length、Integer.class); 'コンパイルしません(_" Array型のcopyOf(int []、int)メソッドは引数には適用されませんint []、int、Class
System.arraycopy
(あなたoffset
とlength
パラメータを介してアレイの任意の部分をコピーする能力を与えます)。
Integer[] is = new Integer[] { 4, 6 }
Integer[] copy = Arrays.copyOf(is, is.length);
それともタイプ絞り込むことができます:あなたができることを
Number[] is = new Number[]{4, 5};
Integer[] copy = Arrays.copyOf(is, is.length, Integer[].class);
注意をそれは使用することができますので、JDK 6で追加され、一般的な方法でありましたか
java.util.Arrays.copyOf
配列上にclone
メソッドを使用してください。
Number[] other = is.clone();
- 1. 非プリミティブ配列
- 2. System.arrayCopyを使用してプリミティブ型の配列をコピーします。
- 3. 任意のプリミティブ型をa Java配列に格納する
- 4. イベントの非プリミティブ型
- 5. プリミティブ型メモリをJavaでコピーする方法は?
- 6. プリミティブ型のJavaクローンクラス
- 7. オブジェクト、配列、プリミティブ型のJavaと正確な参照サイズ
- 8. Java - プリミティブ型のリスナーを変更する
- 9. JAVAの配列をコピーする
- 10. Java変換不明なプリミティブ配列からオブジェクト配列へ
- 11. Javaクラスのコピーと配列
- 12. Javaで配列をコピーする
- 13. ファイルを配列にコピーする(Java)
- 14. java - 配列リストをコピーする
- 15. Javaのプリミティブの2つの配列を比較しますか?
- 16. のJavaのtoArray()メソッド:プリミティブ結果型
- 17. Javaコレクション。プリミティブ型はなぜですか?
- 18. クラス型パラメータ渡しのJavaプリミティブ
- 19. java-volatileキーワード(非プリミティブの場合)
- 20. Javaライブラリのプリミティブ配列ソートで使用されるソートアルゴリズム
- 21. Mockito matcherとプリミティブの配列
- 22. プリミティブ型
- 23. のJavaジェネリック型変数配列型
- 24. Entity Frameworkコード先頭CTP5:非プリミティブ型を定義する方法
- 25. プリミティブ型のプロモーション
- 26. androidのアクティビティ間で非プリミティブ型のデータを渡す
- 27. Java JAXB非整列列挙型
- 28. 角型2クラスの2D配列のコピーを作成する
- 29. クラスでアクセスするC++プリミティブ配列
- 30. プリミティブ型のスカラマップ値型
配列自体(つまり、配列内の参照)のみをコピーするか、配列内の参照が指し示すすべてのオブジェクトも複製したいですか? – Jesper