پست

مجموعه ها و ساختارهای داده در .net

داده های هم شکل و مشابه، در زمان ویرایش یا ذخیره سازی، با کارایی بیشتری قالب مدیریت هستند.
در زبان .net و دیگر زبان های برنامه نویسی، کالکشن یا مجموعه های مختلفی برای مدیریت داده های هم شکل وجود دارد.
ساختار های داده به دو صورت کلی Generic و Non-Generic وجود دارند. مورد اول بر خلاف مورد دوم Type-Safe می‌باشد، پس عملکرد بهتری دارد.

نوشته شود

دلیلنوع Genericنوع Non-Genericنوع Thread-safe
ذخیره بصورت key/value با قابلیت جستجو سریع بر اساس کلیدDictionaryHashtableConcurrentDictionary

ReadOnlyDictionary

ImmutableDictionary
دسترسی بر اساس indexListArray

ArrayList
ImmutableList

ImmutableArray
استفاده بصورت FIFOQueueQueueConcurrentQueue

ImmutableQueue
استفاده بصورت LIFOStackStackConcurrentStack

ImmutableStack
دسترسی به ترتیب به آیتم هاLinkedListپیشنهاد نمی شودپیشنهاد نمی شود
دریافت نوتیفیکیشن در زمان افزودن و حذفObservableCollectionپیشنهاد نمی شودپیشنهاد نمی شود
داده های مرتب شدهSortedListSortedListImmutableSortedDictionary

ImmutableSortedSet
مجموعه ای بر اساس توابع ریاضیHashSet

SortedSet
پیشنهاد نمی شودImmutableHashSet

ImmutableSortedSet

پیچیدگی زمانی

متغیرهزینه استهلاکبدترین زمانغیرقابل تغییرپیچیدگی زمانی
Stack<T>.PushO(1)O(n)ImmutableStack<T>.PushO(1)
Queue<T>.EnqueueO(1)O(n)ImmutableQueue<T>.EnqueueO(1)
List<T>.AddO(1)O(n)ImmutableList<T>.AddO(log n)
List<T>.Item[Int32]O(1)O(1)ImmutableList<T>.Item[Int32]O(log n)
List<T>.EnumeratorO(n)O(n)ImmutableList<T>.EnumeratorO(n)
HashSet<T>.Add, lookupO(1)O(n)ImmutableHashSet<T>.AddO(log n)
SortedSet<T>.AddO(log n)O(n)ImmutableSortedSet<T>.AddO(log n)
Dictionary<T>.AddO(1)O(n)ImmutableDictionary<T>.AddO(log n)
Dictionary<T> lookupO(1)O(1) – or strictly O(n)ImmutableDictionary<T> lookupO(log n)
SortedDictionary<T>.AddO(log n)O(n log n)ImmutableSortedDictionary<T>.AddO(log n)

مبنع:
https://docs.microsoft.com/en-us/dotnet/standard/collections/