在Java中複製非初始類型數組的首選方法是什麼?性能問題如何?Java:複製非原始類型數組
8
A
回答
7
老學校的方式是:
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)
這第一個使得使用原始數組類型的副本,而第二個使用不同的陣列型的副本。
請注意,arraycopy和3參數copyOf必須根據目標數組類型檢查原始(源)數組中每個元素的類型。所以兩者都可以拋出類型異常。 2參數copyOf(理論上至少)不需要做任何類型檢查,因此應該(理論上)更快。在實踐中,相對性能將取決於實施。例如,arraycopy
通常由JVM給予特殊處理。
+0
誰想知道'int [] array = {1,2,3}; int [] copy = Arrays.copyOf(array,array.length,Integer.class);'不會編譯(_「類型數組中的方法copyOf(int [],int)不適用於參數int [],int,類
14
System.arraycopy
(它給你經由offset
和length
參數複製的陣列的任意部分的能力)。或者是在JDK 6加入,是一個通用的方法,因此可以被用來
java.util.Arrays.copyOf
:
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);
注意,你可以在陣列上也使用clone
方法:
Number[] other = is.clone();
相關問題
- 1. 非可複製類型的數組
- 2. 將鋸齒狀的n維原始數組複製到java中的新類型
- 3. 如何在Java中複製原始類型的內存?
- 4. Java在非原始數據類型中輸入值
- 5. Excel - 恢復原始數據類型
- 6. 複製數組然後刪除原始
- 7. 在C++中初始化非原始類靜態數據類型
- 8. Java - 引用原始數據類型?
- 9. 參數化Java中的原始類型
- 10. typedef - 原始類型到原始類型
- 11. Rails ActiveRecord和原始類型數組
- 12. 定製鑄造原始數據類型
- 13. Java類複製和數組
- 14. Java泛型 - 原始類型和參數化類型轉換
- 15. StructureMap非原始類型列表
- 16. C++傳遞值與非原始類型?
- 17. 圖表綁定到非原始類型
- 18. 事件中的非原始類型
- 19. 原始類型和泛型 - Java的
- 20. Java泛型和原始類型
- 21. Java的泛型和原始類型
- 22. Java如何處理原始類型數組?
- 23. 在Java中,可以將非原始類型視爲常量嗎?
- 24. SSE數據類型和原始類型
- 25. 除去非原始型
- 26. JavaScript中的原始數據類型與非原始數據類型之間的區別
- 27. 作爲函數參數的非原始類的PHP數組
- 28. 複製並更新數組值更新原始數組值javascript
- 29. 獲取原始,複雜,ArrayEnumerable類型
- 30. 原始數據類型在java中是原子的
您是否只想複製數組本身(即數組中的引用),還是還想克隆數組中引用指向的所有對象? – Jesper 2009-09-02 07:47:03