我最近發現可以通過調用Collections.nCopies()
方法而不是使用for-loop來初始化Java中的List。但是這讓我想到,在for循環中使用這種方法會有性能優勢還是劣勢,還是隻是做同樣事情的一種更簡單的方法?Collections.nCopies()與For循環初始化
回答
由於nCopies
返回的集合是不可變的,因此此集合中的條目不需要「物化」。換句話說,所需要的只是一個T
類型的單個對象的空間;其他一切都是僞裝爲具有N
對象集合的集合接口的實現,但實際上只有一個對象返回N
次。
當您創建的集合很大時,這可能會證明您可以在空間上獲得很大改善:實際上,集合越大,與通過for
環路初始化的真實集合相比,您的儲蓄就越大。
+1 - 爲了完整性,值得注意的是,Java 6和Java 7 *中的nCopies方法的行爲(我檢查了代碼),並且沒有理由期望爲未來的版本進行更改。 –
因爲它返回一個不可變的集合,是否會影響ArrayList的add()方法? –
@OmarAbdeldayem是的,你會得到一個'RuntimeException'肯定是一個'UnsupportedOperationException' – nachokk
當您使用nCopies()作爲List構造函數的參數時,不變性不是問題:構造函數創建一個不可變的副本。
- 1. for循環初始化
- 2. For循環初始化
- 3. 初始化for循環中的映射
- 4. Java從For循環初始化ArrayList
- 5. 在for循環中初始化視圖
- 6. 初始化語句for循環
- 7. 缺失; for循環初始化
- 8. for循環缺失的初始化
- 9. 初始化變量在for循環
- 10. 「for」循環的初始值
- 11. 使用IntellijIDEA在For循環中未初始化循環變量
- 12. 用for循環初始化鋸齒陣列<int>由for循環
- 13. Verilog For循環:錯誤的初始值
- 14. for循環初始聲明錯誤
- 15. 爲什麼for循環初始化中的條件比循環內部更快?
- 16. 如何使用已在for循環中初始化的變量?
- 17. 我的變量不能初始化for循環MATLAB
- 18. 使用for循環的字符串數組初始化
- 19. Outlook 2010宏引發VBA錯誤'For循環未初始化'
- 20. 目標C++ for循環多個初始化失敗
- 21. 初始化一個for循環有2個變量
- 22. 增強for循環無法初始化對象
- 23. 通過嵌套for循環初始化哈希映射
- 24. 非常奇怪的掛在一個for循環初始化
- 25. 變量初始化外部和for循環之間的區別
- 26. 失蹤;在for循環初始化器後
- 27. C++ for循環初始化計數器錯誤
- 28. 的Javascript:略初始化嵌套For循環內
- 29. 'for'中的對象初始化和循環?
- 30. 在java中初始化for循環中的對象?
您是否嘗試過測試? –