+ All Categories
Home > Documents > Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si...

Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si...

Date post: 20-Feb-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
42
Tablouri si Colectii Definire tablou. Tablouri unidimensionale, multidimensionale, de lungimi variabile (jagged arrays). Colectii nongenerice Colectii generice Colectii specializate Clasificare colectii Spatiile de nume: System.Collections; System.Collections.Generic; System.Collections.Specialized;
Transcript
Page 1: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Tablouri si Colectii

Definire tablou.

Tablouri unidimensionale, multidimensionale, de lungimivariabile (jagged arrays).

Colectii nongenerice

Colectii generice

Colectii specializate

Clasificare colectii

Spatiile de nume:

System.Collections;

System.Collections.Generic;

System.Collections.Specialized;

Page 2: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Tablouri - Arrays

• Tablourile au lungimea fixata. Primul element are indexul = 0 (zero).

• Exemplu declarare tablou unidimensional:

int[] numbers = new int[3];

numbers[0] = 1;

numbers[1] = 2;

numbers[2] = 3;

Initializare in momentul crearii:

int[] nums = new int[3] { 1, 2, 3 };

string[] orase = new string[2] { "Iasi", "Botosani" };

Stabilire dimensiune:

int n = 10;

int[] sir = new int[n];

// class Persoana { … }

Persoana[] persoana = new Persoana[2];

Page 3: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Tablouri multidimensionale

• Tablou bidimensional (matrice cu 2 linii

si 3 coloane = 6 elemente):

int[,] nums = new int[2,3];

• Tablou cu 3 dimensiuni: 2*3*4 = 24

elemente:

int[,,] nums3 = new int[2,3,4];

Page 4: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Tablouri de tablouri (jagged arrays)

• Poate fi “vazut” ca un tablou cu o dimensiune in care fiecare element este la randullui un tablou cu o dimensiune.

• Exemplu:

• int[][] nums = new int[2][] {new int[2], new int[3]};

• // elementul nums[0] contine un tablou cu dimensiunea 2, etc.

• Reprezentarea vizuala ar putea fi aceasta:

0 1

----------

* *

* *

*

• Forma de apel:

nums[0][1] = 10;

int x = nums[0][1];

Page 5: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Definitie colectii

• Colectiile contin o grupare de

articole. Colectiile contin obiecte

(tipurile valoare sunt convertite la

tipuri referinta – boxing).

• Element = un articol al colectiei.

Page 6: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Clasificare colectii

• Dupa continut:– Liste de elemente;

– Liste de perechi (cheie, valoare).

• Dupa proprietati – ex:– Sortate

– Nesortate

• Sau– Colectii non-generice

– Colectii generice

– Colectii specializate

Page 7: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice

• Spatiul de nume: System.Collections

• Clase de baza:

• CollectionBase: clasa de baza abstractapentru o colectie puternic tipizata.

• DictionaryBase: clasa de baza abstractapentru o colectie puternic tipizata de perechi(key, value).

• ReadOnlyCollectionBase: clasa de bazaabstracta pentru colectii non-generice, read-only si puternic tipizate.

Page 8: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice

• Lista de elemente

• ArrayList: implementeaza interfata IList. Foloseste un tablou a carui dimensiune este modificata in mod dinamic.

ArrayList al = new ArrayList();

al.Add(“Colectie");

al.Add(“ArrayList");

al.Add(“ in .NET");

// scanare elemente

foreach(object o in al)

Console.Write(“ {0} “, o);

Page 9: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: ArrayList

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• Add, AddRange, Clear, Contains,

Insert, InsertRange, Remove,

ToArray, Reverse.

Page 10: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: BitArray

• BitArray: zona compacta de valori pe biti, reprezentati ca Boolean (true = bitul este 1; false = bitul este 0).

• Elementele pot fi accesate folosind un index (0 indexul primului element).

int[] nums = new int[3] { 1, 2, 3 };

BitArray ba = new BitArray(nums);

foreach (object o in ba)

Console.Write("{0} ", o);

Page 11: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Rezultat la BitArray

• Citeste de la drepta la stanga

• 1 ���� 0...01

• True False False False False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

• 2 ����0...010

• False True False False False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

• 3 ����0...011

• True True False False False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

Page 12: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Modificare BitArray

int[] nums = new int[3] { 1, 2, 3 };

BitArray ba = new BitArray(nums);

ba[3] = true;

foreach (object o in ba)

Console.Write("{0} ", o);

Page 13: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Rezultat BitArray: ba[3] = true;

• Citeste de la drepta la stanga

• 9 ���� 0...01001• True False False True False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

• 2 ����0...010

• False True False False False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

• 3 ����0...011

• True True False False False False False False

• False False False False False False False False

• False False False False False False False False

• False False False False False False False False

Page 14: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: BitArray

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• And, CopyTo, Get, Not, Or, Set,

SetAll.

Page 15: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: Queue

• Queue: colectie de obiecte si respecta FIFO (First In, First Out).

• Implementeaza colectia ca un tablou circular.

• Coada de mesaje din Windows respectaaceasta structura.

• Queue q = new Queue();

• q.Enqueue(“Mesaj:Desenare fereastra");

• q.Enqueue(“Mesaj:Afisare fereastra");

• q.Enqueue(“Mesaj:Inchide fereastra");

Page 16: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: Queue

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• Clear, Contains, Enqueue, Dequeue,

Peek, CopyTo, etc.

Page 17: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Clase non-generice: Stack

• Stack: colectie de obiecte si respecta

LIFO (Last In, First Out).

• Este implementat ca un buffer circular.

Stack ms = new Stack();

ms.Push(“1");

ms.Push(“0");

ms.Push(“1");

Page 18: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Clase non-generice: Stack

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• Clear, Contains, CopyTo, Peek, Pop,

Push.

Page 19: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice

• Lista perechi (key, value):

• Hashtable: colectie de perechi(key,value), bazate pe codul hash al

cheii.

• SortedList: colectie de perechi(key,value) sortate dupa valoarea cheii

si accesibile prin cheie sau index.

Page 20: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: HashTable

• Fiecare element este o pereche (key,value) memorat intr-un obiectDictionaryEntry.

• Cheia nu poate fi null, valoarea poate fi.

• Obiectele folosite in cheie trebuie sa suprascrie metodeleObject.GetHashCode (sau interfata IHashCodeProvider) siObject.Equals (sau interfata IComparer).

• Obiectele folosite in cheie trebuie sa fie “immutable”.

• Un obiect este “immutable” daca starea acestuia nu poate fi modificatadupa ce a fost creat.

• Clasa System.String este “immutable”.

var imutabil = new { A = 2, B = 3 }; // creaza un obiect immutable

imutabil.A = 11; // eroare la compilare

Error 1 Property or indexer 'AnonymousType#1.A' cannot be assigned to -- it is read only …

Page 21: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: HashTable

• Exemplu

Hashtable ht = new Hashtable();

ht.Add(“IS", “Iasi");

ht.Add(“BT", “Botosani");

ht.Add(“SV", “Suceava");

ht.Add(“RegiuneaNE", “Iasi");

ht[“BC”] = “Bacau”; // proprietatea Item

• Parcurgerea colectiei se face astfel:

foreach( DictionaryEntry de in ht ) {

Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value); }

Observatie: cheile sunt unice, valorile pot fi duplicate.

Page 22: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: HashTable

• Obtinerea valorilor

ICollection values = ht.Values;

• Obtinerea cheilor

ICollection keys = ht.Keys;

• Observatie: Tipul pentru values si keys este celfolosit la crearea ht.

• Parcurgere colectie keys:

• foreach (string s in keys){ …}

Page 23: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: HashTable

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• Add, Clear, ContainsKey,

ContainsValue, CopyTo, Remove.

Page 24: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: SortedList

• Reprezinta o colectie de perechi (key, value) ce sunt sortate dupa cheie si suntaccesibile prin cheie sau index. Intern exista doua tablouri: unul pentru chei sialtul pentru valori.

• ExempluSortedList sl = new SortedList();

sl.Add(“Z", “Trei");

sl.Add(“Y", “Doi");

sl.Add(“X", “Unu");

Page 25: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: SortedList

• Parcurgere lista:

for ( int i = 0; i < sl.Count; i++ )

{

Console.WriteLine( "\t{0}:\t{1}", sl.GetKey(i),

sl.GetByIndex(i) );

}

Page 26: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii non-generice: SortedList

• Metode uzuale – consultati MSDN

pentru sintaxa completa:

• Add, Clear, Contains, GetKeyList,

GetValueList, Count, Item, Keys, etc.

Page 27: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice

• Spatiul de nume System.Collections.Generic

• Colectie tip lista de elemente:– HashSet<T>: o multime de obiecte fara elemente duplicate

– SortedSet<T> : obiecte ordonate

– LinkedList<T> : lista dublu inlantuita

– LinkedListNode<T> : un nod in LinkedList<T>

– List<T>

– Queue<T>

– Stack<T>

– SynchronizedCollection<T>: colectie “thread safe”.

– SynchronizedReadOnlyCollection<T>: RO, “thread safe”

• T reprezinta tipul din colectie

Page 28: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice - Exemple

• List<int> li = new List<int>();

• li.Add(2);

• li.Add(10);

• List<Persoana> lp = new

List<Persoana>();

• Persoana p1 = new Persoana();

• lp.Add(p1); …

• Analog pentru Queue<T> si Stack<T>.

Page 29: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice: LinkedList<T>

• Lista dublu inlantuita. Fiecare nod in obiectul LinkedList <T > estede tipul LinkedListNode <T >. Implementeaza interfata genericaICollection<T>

• Operatii

• Adaugare: ((ICollection<T>)lista).Add(T)– AddAfter(LinkedListNode<T>, T)

– AddAfter(LinkedListNode<T>, LinkedListNode<T>)

– AddBefore(LinkedListNode<T>, T)

– AddBefore(LinkedListNode<T>, LinkedListNode<T>)

– AddFirst(T), AddFirst(LinkedListNode<T>)

– AddLast(T), AddLast(LinkedListNode<T>)

• Eliminare element: Clear, Remove, RemoveFirst, RemoveLast

• Cautare: Find(T), FindLast(T)

• Proprietati: Count, First, Last

• Cererei booleene: Contains(T)

Page 30: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice: LinkedList<T>

• Metode extinse (consultati MSDN):– All<T>,

– Any<T>(),

– AsParallel(),

– AsParallel<T>(),

– AsQueryable(), AsQueryAble<T>(),

– Concat<T>,

– Contains<T>(T),

– Distinct<T>(),

– First<T>(),

– GroupBy…

Page 31: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice: LinkedList<T> -

Exemple

• LinkedList<int> lst = new LinkedList<int>(new int[5] { 4, 2, 5, 9, 7 });

• ((ICollection<int>)lst).Add(8); // trebuie cast

• lst.AddFirst(1);

• lst.AddLast(99);

• lst.AddLast(100);

• var query = lst.AsQueryable<int>();

• var max = lst.Max<int>();

• var items = from x in query //lst este de asemenea corect

• where (x%2 == 1 /*&& x > 10*/)

• orderby x

• select x;

• Console.WriteLine("\nNumere impare: Valoarea maxima in sir = {0}", max);

• foreach (int k in items)

• Console.WriteLine("{0} ", k);

• var itemc = lst.Contains<int>(99); // returneaza True sau False

• Console.WriteLine("Exista valoarea 99 in sir? {0}", itemc);

Page 32: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice

• KeyedByTypeCollection<TItem>

– Colectie in care articolele sunt tipuri ce

servesc drept chei.

• Colectii tip perechi (key, value)

– Dictionary<T,U>

– SortedList<T,U>

– SortedDictionary<T,U>

Page 33: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice : Dictionary<T,U>

Dictionary<string, string> di = new

Dictionary<string, string>();

di.Add(“Z", “Trei");

di.Add(“Y", “Doi");

di.Add(“X", “Unu");

– Iterarea elementelor:

• foreach( KeyValuePair<string, string> kvp in

di ) { Console.WriteLine("Key = {0}, Value =

{1}", kvp.Key, kvp.Value); }

Page 34: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice : Dictionary<T,U>

: Operatii

• Adaugare: Add

• Stergere: Clear, Remove

• Cautare: ContainsKey,

ContainsValue

Page 35: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice : SortedList<T,U>,

SortedDictionary<T,U>

• Colectie perechi (key, value) bazate

pe implementarea interfetei

IComparer<T>.

• Diferenta consta in timpul de

regasire al articolelor si al memoriei

ocupate. SortedList permite

regasirea informatiei si pe baza de

index.

Page 36: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice: SortedList<T,U>

SortedList<string, string> sl = new SortedList<string, string>();

sl.Add(“Z", “Trei");

sl.Add(“Y", “Doi");

sl.Add(“X", “Unu");

Iterarea elementelor:

foreach( KeyValuePair<string, string> kvp in sl) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); }

Iterarea valorilor:

IList<string> slValues = sl.Values;

foreach( string s in slValues ) { Console.WriteLine("Value = {0}", s); }

Regasire valoare prin index:

String s = sl.values[2];

Page 37: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Colectii generice:

SortedDictionary<T,U>

SortedDictionary<string, string> sd = new SortedList<string, string>();

sd.Add(“Z", “Trei");

sd.Add(“Y", “Doi");

sd.Add(“X", “Unu");

Iterarea elementelor:

foreach( KeyValuePair<string, string> kvp in sd) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); }

Iterarea valorilor:

SortedDictionary<string, string>.ValueCollection sdValues = sd.Values;

foreach( string s in sdValues ) { Console.WriteLine("Value = {0}", s); }

SortedDictionary<string, string>.KeyCollection sdKeys = sd.Keys;

Etc.

Page 38: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Exercitii

• Se doreste sa se sorteze cheile

si/sau valorile continute intr-o

colectie generica Dictionary si sa se

afiseze in ordine crescatoare sau

descrescatoare.

Page 39: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Exercitii

• In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList, List<T>, Hashtable sau Dictionary<T,U>. Folositiaceste date pentru a personaliza aplicatia(de ex. aplicatia va sti la relansare punctulunde a fost oprita ultima data).

• Scrieti codul necesar pentru a realizaacest lucru, precum si o aplicatie de test.

• Indicatie: Vedeti documentatia din MSDN pentru serializarea obiectelor -SerializableAttribute.

Page 40: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Exercitii

• Se considera urmatorul tip:

public class Info

{ public Info(int n)

{ this.n = n; }

public int n = 0;

}

In cadrul unei aplicatii construiti o lista de obiecte de tip Data:

List<Info> numere = List<Info>();

Populati aceasta lista – minim 5 elemente. Fara a crea o alta lista scrieti codulce va aduna la fiecare element din lista valoarea 10. Testati. Veti afisaelementele adaugate in lista si apoi elementele modificate. Afisatielemetele ce contin numere impare in aceasta lista.

Indicatie: Vedeti Foreach.

Page 41: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Exercitii

• Implementati un tip ce va fi memorat ca elemente intr-un array sauArrayList si pentru care sa puteti folosi metodele: Array.Sort siArrayList.Sort pentru a realiza sortarea elementelor din array. Acest tip trebuie implementat astfel incat sa-l puteti folosi in SortedList.

• Exemplu:

class Segment {

int x1;

int y1;

int x2;

int y2;

//…

}

Acest tip poate fi sortat avand in vedere lungimea segmentului sau poate fiordonat dupa valorile unei perechi (x1, y1), etc.

Indicatie: Interfetele IComparable si IComparer.

Page 42: Tablouri si Colectii - Alexandru Ioan Cuza Universityiasimin/csharp/C2_2011 Tablouri si Colectii.pdf · Exercitii • In cadrul aplicatiei Dv. memorati date in colectii de tip ArrayList,

Exercitii

• Implementati algoritmul HeapSort

pentru colectia List<int>.


Recommended