2009-09-15 59 views
65

Tôi thấy rằng SortedList<TKey, TValue>SortedDictionary<TKey, TValue>Dictionary<TKey, TValue> triển khai cùng một giao diện.SortedList <>, SortedDictionary <> và Dictionary <>

  1. Khi nào chúng tôi nên chọn SortedListSortedDictionary qua Dictionary?
  2. Sự khác biệt giữa SortedListSortedDictionary về mặt đơn đăng ký là gì?
+0

Xem http://stackoverflow.com/questions/935621/whats-the-difference-between-sortedlist-and -sorteddictionary – nawfal

Trả lời

71
  1. Khi lặp qua các phần tử của một trong hai thành phần, các thành phần sẽ được sắp xếp. Không phải như vậy với Dictionary<T,V>.

  2. MSDN địa chỉ chênh lệch giữa SortedList<T,V>SortedDictionary<T,V>:

Các SortedDictionary (TKey, TValue) lớp generic là một binary search tree với O (log n) hồi, trong đó n là số nguyên tố trong từ điển. Về mặt này, nó tương tự như lớp chung SortedList (TKey, TValue). Hai lớp có các mô hình đối tượng tương tự nhau và đều có truy xuất O (log n). Trường hợp hai lớp khác nhau là sử dụng bộ nhớ và tốc độ chèn và xóa:

SortedList (TKey, TValue) sử dụng ít bộ nhớ hơn SortedDictionary (TKey, TValue).

SortedDictionary (TKey, TValue) đã chèn nhanh và xóa hoạt động cho dữ liệu chưa được phân loại: O (log n) trái ngược với O (n) cho SortedList (TKey, TValue).

Nếu danh sách được điền cùng một lúc từ dữ liệu được sắp xếp, SortedList (TKey, TValue) nhanh hơn SortedDictionary (TKey, TValue).

+8

Một sự khác biệt thực tế, rằng trong 'SortedList' bạn có thể lấy bằng chỉ mục (như truy ngược đối với khóa) và trong' SortedDictionary' bạn không thể. –

8
  1. Khi bạn muốn tập hợp được sắp xếp theo khóa khi bạn lặp lại khóa đó. Nếu bạn không cần dữ liệu của bạn được sắp xếp, bạn tốt hơn chỉ với một từ điển, nó sẽ có hiệu suất tốt hơn.

  2. SortedList và SortedDictionary khá nhiều làm điều tương tự, nhưng được thực hiện khác nhau, do đó có điểm mạnh và điểm yếu khác nhau explained here.

10

Để tóm tắt các kết quả của một Performance Test - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable, kết quả từ tốt nhất để tồi tệ nhất cho các kịch bản khác nhau:

Memory Usage:

SortedList<T,T> 
Hashtable 
SortedDictionary<T,T> 
Dictionary<T,T> 

Insertions:

Dictionary<T,T> 
Hashtable 
SortedDictionary<T,T> 
SortedList<T,T> 

Operations Tìm kiếm:

Hashtable 
Dictionary<T,T> 
SortedList<T,T> 
SortedDictionary<T,T> 

hoạt động vòng lặp foreach

SortedList<T,T> 
Dictionary<T,T> 
Hashtable 
SortedDictionary<T,T> 
Các vấn đề liên quan