回答
從排序列表文件:「排序列表被實現爲鍵/值對的陣列,由密鑰進行排序。」
http://msdn.microsoft.com/en-us/library/e7a8xew6%28v=vs.110%29.aspx
如果使用默認的構造函數(無參數):「初始化SortedList的類,它是空的新實例,具有默認的初始容量,並進行排序根據添加的每個密鑰實現的IComparable接口到SortedList對象「。
http://msdn.microsoft.com/en-us/library/cxb97few%28v=vs.110%29.aspx
或者您也可以通過自定義比較:
初始化SortedList的類,它是空的新實例,具有默認的初始容量,並根據指定的Icomparable接口分類。 http://msdn.microsoft.com/en-us/library/e7a8xew6%28v=vs.110%29.aspx
其它構造選項: http://msdn.microsoft.com/en-us/library/System.Collections.SortedList.SortedList%28v=vs.110%29.aspx
如何使用的IComparer接口:http://msdn.microsoft.com/en-us/library/system.collections.icomparer%28v=vs.110%29.aspx
如果你有興趣它是如何工作的內部,讓自己的任何像樣的反編譯器,如.NET反射器。
快速查看顯示,在內部,SortedList通過始終保持內部數組排序來維護它的排序狀態。使用添加方法添加項目時,它會使用關鍵字的二進制搜索來標識插入新項目的正確索引。
不需要反編譯器; C#中的源代碼可以從微軟的網站上下載一點搜索。 –
A SortedList
是維護兩個數組以存儲列表的元素的對象。
一個陣列商店的Key
和另一個陣列商店的關聯values
。
SortedList中的元素根據創建SortedList時指定的特定IComparer實現或根據密鑰本身提供的IComparable實現進行排序。它們不能包含重複的鍵。
無論何時添加或刪除任何元素,都會相應地調整索引,結果與SortedList
相關的操作更慢。
SortedList
類的源代碼可以找到here。
根據該源,SortedList
保持數據的鍵和值的兩個滑動數組:
private TKey[] keys;
private TValue[] values;
排序順序被保持鍵的陣列上。當添加新項目(鍵/值對)時,SortedList
首先在已排序的鍵陣列中找到合適的索引(使用Array.BinarySearch
),然後移動的部分內容鍵和值數組(使用Array.Copy
)從此索引開始向上以創建插入關鍵字和值的差距。同樣,當一個項目被其關鍵字刪除時,SortedList
將在關鍵字數組中搜索該項目的索引,然後從這個索引向下移動兩個數組的部分內容以縮小差距。
因此,有一點需要記住的是,當添加或刪除大SortedList
時,可能會移動大量數據。積極的一面是,無論列表大小如何,通過索引檢索項目總是很快。
- 1. C#eventhandler如何在內部工作?
- 2. C#Linq SortedList篩選到SortedList
- 3. C++/cli如何在非託管部件內部工作?
- 4. 數組如何在c/C++內部工作
- 5. 在Java中如何插入和刪除SortedList的工作方法
- 6. C#Linq return SortedList
- 7. 在C++中的矢量內部工作?
- 8. SQLite遊標如何在內部工作?
- 9. canvas.width = canvas.width如何在內部工作?
- 10. entrySet()如何在HashMap內部工作?
- 11. Viewstate如何在內部工作
- 12. mongodb更新如何在內部工作?
- 13. ContentProvider如何在內部工作
- 14. JVM如何在內部工作
- 15. 'range()'如何在內部工作?
- 16. JS Promises如何在內部工作?
- 17. LinkedList如何在Java內部工作?
- 18. typedef如何在內部工作?
- 19. ant任務如何在內部工作?
- 20. CGContextClipToMask如何在內部工作?
- 21. HibernateTemplate如何在內部工作
- 22. AsQueryable()如何在內部工作?
- 23. DBContext SaveChanges如何在內部工作?
- 24. DISTINCT如何在內部工作?
- 25. Meteor.loginWithExternalSystem如何在內部工作?
- 26. asp.net捆綁如何在內部工作
- 27. ASP.NET路由如何在內部工作?
- 28. cairngorm框架如何在內部工作
- 29. OpenMP如何在內部工作
- 30. 「adb reboot bootloader」如何在內部工作?
這種情況下,你應該檢查適當的源代碼或使用反編譯器來查看它是如何實現的。這個問題對於SO來說是不合適的。 –
或只查看文檔:http://msdn.microsoft.com/en-us/library/ms132319%28v=vs.110%29.aspx – ps2goat
@ ps2goat,當然,如果你想要一個解釋。 :) –