Saturday, February 9, 2013

Collections ve Generic


Koleksiyonlar:

System.Collections isim uzayında yer alırlar.

Generic:

System.Collections.Generic isim uzayında yer alırlar.













Array:

Tüm genel diziler Array sınıfından türemiştir. Bu sınıfın dezantajı dizi boyutunun başlangıçta bilinmesinin gerekli olmasıdır. Önceden boyutu belli olan ve tek bir veri tipinin saklanacağı yapılar için uygundur.

int [] array = new int[10];
string []  array2 = new string[10];

ArrayList:

Dizilerin benzeridir. Tek farkı sadece object tipinden verileri saklanabilmesidir. Dolayısıyla ArrayList'e atılan veriler object tipinde değilse boxing uygulanır ve performans düşer. Boyutunun başlangıçta bilinmesi gerekmemektedir.

Add metodu ile eleman eklenir. Sort metodu ile elemanları sıralayabiliriz.

ArrayList liste = new ArrayListe();
liste.add("merhaba");
liste.add(2);

HashTable ve SortedList:

HashTable verileri Key alanın Hash kodlarına göre, SortedList ise alfabetik sıraya göre yapar. HashTable daha hızlı çalışır. Boyutun önceden bilinmesi gerekmez.

HashTable tbl=new HashTable();
tbl.Add("1", "metin");
tbl.Add("a",3)

Stack:

Son elemana ulaşmak en kolaydır. ilk elemana ulaşmak için diğer bütün elemanları çıkarmak gerekir.

Push() metodu koleksiyona eleman eklemek için kullanılır.

Pop() metodu son giren elemanı verirken bu elamanı koleksiyondan siler.

Bunun önüne geçen metod Peek() metodudur.

Stack stc=new Stack();
Stc.Push("deneme");

Stack stc = new Stack();
stc.Push("deneme");
stc.Push(120);
stc.Push(true);
stc.Pop();

Queue:

Enqueue() metodu koleksiyona eleman eklemek için kullanılır.

Dequeue() metodu koleksiyona giren eleman verirken bu elemanı koleksiyondan siler.

Bunun önüne geçen metod Peek() metodudur.

Queue sira=new Queue();

stc.Enqueue("deneme");
stc.Enqueue(120);
stc.Enqueue(true);

Generic:


List<T>:

En verimli çalışan ve en çok kullanılan Generic sınıfımızdır. ArrayList sınıfının Generic versiyonudur.

List<int> lst = new List<int>();

Lst.Add(2);
Lst.Add(192);


Dictionary<>  ve SortedList<>:


HashTable ve SortedList yapısını kullanmaktadırlar. Tek fark Key ve Value değerlerinin generic olmasıdır. Bu da her veri için iki adet boxing işleminden kurtulmak demektir. Bu da bize çok fazla performans artışı sağlar.

Dictionary<int, string> d = new Dictionary<int, string>();
d.Add(1,"metin1");
d.Add(2,"metin2");
d.Values----- Verileri dizi şeklinde getirir.


Stack<T>  ve Queue<T>:


Stack<int> stc = new Stack <int>();
stc.Push(5);
stc.Push(10);
stc.Pop();
stc.Peek();


Queue<int> q = new Queue<int>();
stc.Enqueue(5);
stc.Enqueue(10);
stc.Dequeue();
stc.Peek();






No comments:

Post a Comment