20
FEN 2012 UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited .NET: Two libraries: System.Collections System.Collections.Generics

FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

Embed Size (px)

Citation preview

Page 1: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

1

Data Structures and Collections

• Principles revisited • .NET:

– Two libraries:• System.Collections• System.Collections.Generics

Page 2: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

2

interface:

(e.g. Map)

Specification

class Appl{

----

Map m;

-----

m= new XXXMap();

application

class:

HashMap

TreeMap

----

ADT Data structure and algorithmsChoose

and use an adt, e.g. Map

Choose and use a data structure, e.g.

TreeMap

Know about

Read and write (use)

specifications

Data Structures and Collections

Page 3: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

3

Collections LibrarySystem.Collections

• Data structures in .NET are normally called Collections• Are found in namespace System.Collections• Compiled into mscorlib.dll assembly• Uses object and polymorphism for generic containers.• Deprecated!• Classes:

– Array– ArrayList– Hashtable– Stack– Queue

Page 4: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

4

Collection Interfaces• System.Collections implements a range of different interfaces in

order to provide standard usage of different containers– Classes that implements the same interface provides the same

services– Makes it easier to learn and to use the library– Makes it possible to write generic code towards the interface

• Interfaces:– ICollection– IEnumerable– IEnumerator– IList– IComparer– IComparable

Page 5: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

5

ArrayList• ArrayList stores sequences of elements.

– duplicate values are ok – position- (index-) based– Elements are stored in an resizable array.– Implements the IList interface

public class ArrayList : IList, IEnumerable, ...{ // IList services ...

// additional services int Capacity { get... set... } void TrimToSize()

int BinarySearch(object value) int IndexOf (object value, int startIndex) int LastIndexOf (object value, int startIndex) ...}

control of memoryin underlying array

searching

Page 6: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

6

IList Interface• IList defineres sequences of elements

– Access through index

public interface IList : ICollection { int Add (object value); void Insert(int index, object value);

void Remove (object value); void RemoveAt(int index); void Clear ();

bool Contains(object value); int IndexOf (object value);

object this[int index] { get; set; }

bool IsReadOnly { get; } bool IsFixedSize { get; }}

add new elements

remove

containment testing

read/write existing element(see comment)

structural properties

Page 7: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

7

Hashtable• Hashtable supports collections of key/value pairs

– keys must be unique, values holds any data– stores object references at key and value– GetHashCode method on key determine position in the table.

Hashtable ages = new Hashtable();

ages["Ann"] = 27;ages["Bob"] = 32;ages.Add("Tom", 15);

ages["Ann"] = 28;

int a = (int) ages["Ann"];

create

add

update

retrieve

Page 8: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

8

Hashtable Traversal• Traversal of Hashtable

– each element is of type DictionaryEntry (struct)– data is accessed using the Key and Value properties

Hashtable ages = new Hashtable();

ages["Ann"] = 27;ages["Bob"] = 32;ages["Tom"] = 15;

foreach (DictionaryEntry entry in ages){ string name = (string) entry.Key; int age = (int) entry.Value; ...}

enumerate entries

get key and value

Page 9: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

9

.NET 2:System.Collections.Generics

ICollection<T>

IList<T> LinkedList<T> IDictionary<TKey, TValue>

List<T>Dictionary

<TKey, TValue>SortedDictionary<TKey, TValue>

Index ableArray-based

Balanced search tree Hashtabel

(key, value) -pair

Page 10: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

10

Demos

• Lists• Maps• LinkedList in C#

Page 11: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

How does they work?

• Array-based list

• Linked list

FEN 2012 UCN Technology - Computer Science

11

used

Count

Free (waste)

Page 12: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

Dynamic vs. Static Data Structures

• Array-Based Lists:– Fixed (static) size (waste of memory).– May be able to grown and shrink (ArrayList), but this is very

expensive in running time (O(n))– Provides direct access to elements from index (O(1))

• Linked List Implementations:– Uses only the necessary space (grows and shrinks as

needed).– Overhead to references and memory allocation– Only sequential access: access by index requires searching

(expensive: O(n))

FEN 2012 UCN Technology - Computer Science 12

Page 13: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

Hashing

• Keys are converted to indices in an array.

• A hash function, h maps a key to an integer, the hash code.

• The hash code is divided by the array size and the remainder is used as index

• If two or more keys gives the same index, we have a collision.

FEN 2012 UCN Technology - Computer Science

13

Page 14: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

Chaining• The array doesn’t hold the element itself, but a reference to a

collection (a linked list for instance) of all colliding elements.• On search that list must be traversed

FEN 2012 UCN Technology - Computer Science

14

Page 15: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

Efficiency of Hashing• Worst case (maximum collisions):

– retrieve, insert, delete all O(n)

• Average number of collisions depends on the load factor, λ, not on table size

λ = (number of used entries)/(table size)– But not on n.

• Typically (linear probing):

numberOfCollisionsavg = 1/(1 - λ)

• Example: 75% of the table entries in use:

– λ = 0.75:1/(1-0.75) = 4 collisions in average

(independent of the table size).FEN 2012 UCN Technology - Computer

Science 15

Page 16: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

When Hashing Is Inefficient

• Traversing in key order.• Find smallest/largest key.• Range-search (Find all keys

between high and low).• Searching on something else than

the designated primary key.

FEN 2012 UCN Technology - Computer Science

16

Page 17: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

17

(Binary) Search Trees

• Value based container:– The search tree property:

• For any internal node: the value is greater than the value in the left child

• For any internal node: the value is less than the value in the right child

– Note the recursive nature of this definition:• It implies that all sub trees themselves are search trees• Every operation must ensure that the search tree

property is maintained

Page 18: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

18

Example:A Binary Search Tree Holding Names

Page 19: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

19

InOrder:Traversal Visits Nodes in Sorted Order

Page 20: FEN 2012UCN Technology - Computer Science 1 Data Structures and Collections Principles revisited.NET: –Two libraries: System.Collections System.Collections.Generics

FEN 2012 UCN Technology - Computer Science

20

Efficiency

• insert• retrieve• delete

– All operations depend on the depth of the tree

– If balanced: O(log n)• Most libraries use a balanced

version, for instance Red-Black Trees