مجموعه ها و ساختارهای داده در .net
داده های هم شکل و مشابه، در زمان ویرایش یا ذخیره سازی، با کارایی بیشتری قالب مدیریت هستند.
در زبان .net و دیگر زبان های برنامه نویسی، کالکشن یا مجموعه های مختلفی برای مدیریت داده های هم شکل وجود دارد.
ساختار های داده به دو صورت کلی Generic و Non-Generic وجود دارند. مورد اول بر خلاف مورد دوم Type-Safe میباشد، پس عملکرد بهتری دارد.
نوشته شود
دلیل | نوع Generic | نوع Non-Generic | نوع Thread-safe |
---|---|---|---|
ذخیره بصورت key/value با قابلیت جستجو سریع بر اساس کلید | Dictionary | Hashtable | ConcurrentDictionary ReadOnlyDictionary ImmutableDictionary |
دسترسی بر اساس index | List | Array ArrayList |
ImmutableList ImmutableArray |
استفاده بصورت FIFO | Queue | Queue | ConcurrentQueue ImmutableQueue |
استفاده بصورت LIFO | Stack | Stack | ConcurrentStack ImmutableStack |
دسترسی به ترتیب به آیتم ها | LinkedList | پیشنهاد نمی شود | پیشنهاد نمی شود |
دریافت نوتیفیکیشن در زمان افزودن و حذف | ObservableCollection | پیشنهاد نمی شود | پیشنهاد نمی شود |
داده های مرتب شده | SortedList | SortedList | ImmutableSortedDictionary ImmutableSortedSet |
مجموعه ای بر اساس توابع ریاضی | HashSet SortedSet |
پیشنهاد نمی شود | ImmutableHashSet ImmutableSortedSet |
پیچیدگی زمانی
متغیر | هزینه استهلاک | بدترین زمان | غیرقابل تغییر | پیچیدگی زمانی |
---|---|---|---|---|
Stack<T>.Push |
O(1) | O(n ) |
ImmutableStack<T>.Push |
O(1) |
Queue<T>.Enqueue |
O(1) | O(n ) |
ImmutableQueue<T>.Enqueue |
O(1) |
List<T>.Add |
O(1) | O(n ) |
ImmutableList<T>.Add |
O(log n ) |
List<T>.Item[Int32] |
O(1) | O(1) | ImmutableList<T>.Item[Int32] |
O(log n ) |
List<T>.Enumerator |
O(n ) |
O(n ) |
ImmutableList<T>.Enumerator |
O(n ) |
HashSet<T>.Add , lookup |
O(1) | O(n ) |
ImmutableHashSet<T>.Add |
O(log n ) |
SortedSet<T>.Add |
O(log n ) |
O(n ) |
ImmutableSortedSet<T>.Add |
O(log n ) |
Dictionary<T>.Add |
O(1) | O(n ) |
ImmutableDictionary<T>.Add |
O(log n ) |
Dictionary<T> lookup |
O(1) | O(1) – or strictly O(n ) |
ImmutableDictionary<T> lookup |
O(log n ) |
SortedDictionary<T>.Add |
O(log n ) |
O(n log n ) |
ImmutableSortedDictionary<T>.Add |
O(log n ) |
مبنع:
https://docs.microsoft.com/en-us/dotnet/standard/collections/