Collection Classes
From the last two week's labs you may have already identified some issues related to arrays. We learnt that arrays holds identically typed items. However there are instances when you may requires a more flexible data structure that is capable of growing dynamically without throwing an exception (IndexOutOfRangeException) as in the case of an array. .NET framework's System.Collection classes provides a number of builtIn data structures that are dynamic and typesafe. Some of these classes are generic and others are non-Generic. Generic classes are more typesafe and requires a "type parameter" to be specified. Whereas, the non-generic classes are very loosely typed and should be avoided if possible.
Links
Non-Generic Classes
System.Collections namespace consists of following non generic classes:
- ArrayList
- Queue
- Stack
- HashTable
- SortedList
- BitArray
Issues related to non-generic classes:
- Slower executions speed: Can be slower due to memory transfer operations needed in Boxing and Unboxing.
- Boxing - Assigning a value type to a System.Object variable. CLR stores the objects on the heap
- Unboxing - Assigning a reference type to a value type variable. CLR checks ValueType variable being assigned is compatible and copies to a stack based variable. Unlike typical casting, appropriate data types should be used for value type variable or InvalidCastException is thrown. Therefore, the unboxing should be done with in a try/catch block.
- Type safety issues: Can be used to store anything since it stores Objects.
ArrayList Class
ArrayList is the dynamic collection of objects that are listed in a sequential order. ArrayList implements IList, ICollection, IEnumerable, and IClonable interfaces. ArrayList can resize itself to store more items and items can be added and removed from the ArrayList on the fly. Some useful methods of ArrayList class are given below:
- Add()
- AddRange()
- Insert()
- Remove()
- Count()
- Clear()
Links
ArrayList Class - https://msdn.microsoft.com/en-us/library/system.collections.arraylist%28v=vs.110%29.aspx
Generic Classes
Generic classes solves all issues related to non-generic classes mentioned above which includes performance issue and type safety issues. Generic class requires a type parameter to create an instance of the generic class. Type parameter specified cannot be changed later.
System.Collections.Generic namespace consists of following non generic classes:
- List<T>
- Queue<T>
- Stack<T>
- LinkedList<T>
- SortedSet<T>
- Dictionary<TKey, TValue>
- SortedDictionary<TKey, TValue>
List<T> class
List<T> is a automaticially resizing collection of sequencially listed items of type T. List<T> implements ICollection<T>, IEnumerable<T> and IList<T> interfaces.
List<Student> people = new List<Student>() {
new Student ("John", "Paul", 74),
new Student ("Sean", "Smith",45),
new Student ("Jane", "Donald", 90),
new Student ("Jessi", "John", 86)
};
Links
Comments
Post a Comment