Wednesday 1 February 2012

Tips when we use Array,ArrayList,List,HashTable,Dictionary,Sorted List



Array
 - represents an old-school memory array - kind of like a alias for a normal type[] array. Can enumerate. Can't grow automatically. I would assume very fast insertion and retriv. speed.
ArrayList - automatically growing array. Adds more overhead. Can enum., probably slower than a normal array but still pretty fast. These are used a lot in .NET
List - one of my favs - can be used with generics, so you can have a strongly typed array, e.g.List<string>. Other than that, acts very much like ArrayList.
Hashtable - plain old hashtable. O(1) to O(n) worst case. Can enumerate the value and keys properties, and do key/val pairs.
Dictionary - same as above only strongly typed via generics, such as Dictionary<string, string>
SortedList - a sorted generic list. Slowed on insertion since it has to figure out where to put things. Can enum., probably the same on retrieval since it doesn't have to resort, but deletion will be slower than a plain old list.
I tend to use List and Dictionary all the time - once you start using them strongly typed with generics, its really hard to go back to the standard non-generic ones.
There are lots of other data structures too - there's KeyValuePair which you can use to do some interesting things, there's a SortedDictionary which can be useful as well.


  • You can use foreach on types that implement IEnumerableIList is essentially anIEnumberable with Count and Item (accessing items using a zero-based index) properties.IDictionary on the other hand means you can access items by any-hashable index.
  • ArrayArrayListList and SortedList all implement IListDictionary,SortedDictionary, and Hashtable implement IDictionary.
  • If you are using .NET 2.0 or higher, it is recommended that you use generic counterparts of mentioned types.
  • For time and space complexity of various operations on these types, you should consult their documentation.
  • .NET data structures are in System.Collections namespace. There are type libraries such as PowerCollections which offer additional data structures.
  • To get a thorough understanding of data structures, consult resources such as CLRS.

No comments:

Post a Comment