方法Collection.toArray()
的時間複雜度是多少?它是O(n),如果是,它比循環提供什麼好處,並將列表中的值單獨分配給一個數組(除了漂亮的外觀和當然額外的努力)。Collection.toArray()的時間複雜度是多少?
2
A
回答
3
因爲toArray()
方法是抽象的,談到它的時間複雜度一般是沒有意義的。
但是,對於本機實現,其複雜性的確是O(n)
。值得注意的是,Collection
是Iterable
的子接口。如果實現不能有效迭代的Iterable
,那我們是很荒唐的。
toArray()
的實施保持開放,留下優化空間的事實。有可能比使用簡單迭代構建數組更快(數組複製,在多個線程中運行...)。但是,AbstractCollection
中的default implementaion使用您在問題中提到的確切方法。
1
任何集合上的toArray()
調用都會遍歷整個集合。對於來自java.util
的所有收集,這意味着O(n)定時。當然也可以構造比O(n)慢的實現,但O(n)爲時序提供了一個下界,因爲你必須遍歷整個集合。
當您需要調用專門詢問數組的API時,或者在出於任何原因需要製作集合的副本時,請致電toArray()
。一般來說,您不想過度使用toArray()
,因爲它會分配足夠的內存以適合您的集合的所有元素。
相關問題
- 1. 減少時間複雜度
- 2. 分時排序算法的時間複雜度是多少?
- 3. 下面的遞歸函數的時間複雜度是多少
- 4. NavigableMap的floorEntry()方法的時間複雜度是多少?
- 5. 我的代碼中的時間複雜度是多少
- 6. 下面的僞代碼的時間複雜度是多少?
- 7. AngularJS的髒檢查算法的時間複雜度是多少?
- 8. 我的代碼的時間複雜度是多少?
- 9. Java中TreeSet的lower()/ higher()的時間複雜度是多少?
- 10. 樹遍歷的時間複雜度是多少?
- 11. 以下代碼的時間複雜度是多少?
- 12. 爬山算法的時間複雜度是多少?
- 13. 代碼的時間複雜度是多少?
- 14. 以下循環的時間複雜度是多少
- 15. unordered_set <int> :: iterator it + n的時間複雜度是多少?
- 16. 這個函數的時間複雜度是多少?
- 17. 整個算法的時間複雜度是多少?
- 18. 這段代碼的時間複雜度是多少(來自leetcode)?
- 19. Bogosort的平均時間複雜度是多少?
- 20. 添加n個數字的時間複雜度是多少
- 21. heapify堆的時間複雜度是多少
- 22. 劃分兩個數字的時間複雜度是多少?
- 23. 這個算法的時間複雜度是多少?
- 24. 梅森扭紋機的時間複雜度是多少?
- 25. 這個算法的時間複雜度是多少?
- 26. 這個程序的時間複雜度是多少?
- 27. list.index(obj)方法的時間複雜度是多少?
- 28. 方案中'assoc'函數的時間複雜度是多少?
- 29. std :: map的時間複雜度是多少:: map
- 30. Python中collections.Counter()的時間複雜度是多少?
'Collections'沒有'toArray'方法。你的意思是'Collection'接口嗎? – 2014-12-06 03:25:25
謝謝你剛剛編輯它:) – 2014-12-06 05:04:01