C# Non-Generic Koleksiyon Yapıları – System.Collections
ArrayList
Koleksiyon sınıflarının en genel amaçlı olanıdır.Dizilere oldukça benzerler.Tek farkı dizilerde eleman sayısı başta belirtilirken,ArrayList’te eklenen elemana göre eleman sayısı artar.ArrayList ilk oluşturulduğunda kapasite 0,sonra eleman eklendiğinde kapasite 4 olur.Eleman sayısı 4 ü geçtikten sonra kapasite iki kat olarak artmaya başlayacaktır.0,4,8,16,32..
ArrayList koleksiyonu ICollection, IEnumerable, IList ve ICloneable interfacelerini(arayüz) uygular.
Arraylistin üç tane yapıcı metodu mevcuttur.
ArrayList liste = new ArrayList();
Bu şekilde oluşturulan ArrayList koleksiyonunda,eleman eklendikçe kapasite otomatik olarak artacaktır.
ArrayList liste = new ArrayList(40);
Bu şekilde oluşturulan ArrayList koleksiyonunda,kapasite başlangıçta 40 tır.Eleman sayısı 40 ı geçerse otomatik olarak arttırılmaya başlar.
ArrayList liste = new ArrayList(ICollection c);
Bu şekilde oluşturulan ArrayList koleksiyonunda,ICollection arayüzünü uygulamış herhangi bir sınıfın nesnesi parametre olarak verilir.
ArrayList koleksiyonu, içine aldığı elemanları object tipte kabul eder.Yani bir Boxing işlemi görülmektedir.Bu elemanları kullanırken mecburen Unboxing işlemi yapmamız gerekecektir.
Add Metodu
Bir ArrayList koleksiyonuna eleman eklemek için Add() metodu kullanılır.Bu metod object tipte parametre alır.Bu parametreye elemanızı veririz(Bu eleman herhangi bir sınıfın nesneside olabilir.)Ve bu elemanı koleksiyonumuzun en sonuna ekler.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
Remove Metodu
Bir ArrayList koleksiyonundan eleman silmek için Remove() metodu kullanılır.Bu metod object tipte parametre alır.Bu parametreye verilen değerdeki eleman koleksiyondan çıkartılır.Eğer verilen değer bulunamazsa hata oluşmaz, program işleyişine devam eder.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
liste.Remove(3);
//liste ArrayListine eklenen object tipli "3" verisi silinecektir.
Dikkat!!!:Remove() metodu, koleksiyondaki elemanı siliyor ama elemana ayrılan alanı silmiyor.O alana Null değerini koyuyor.
Capacity Özelliği
Capacity özelliği ile ArrayList’in içine konulacak MAX eleman sayısını görebiliriz.(Tabi o MAX eleman sayısı geçildiği anda otomatik olarak artacaktır.)
TrimToSize Metodu
ArrayList in Capacity sindeki boş bulunan alanları bellekten atar.Aşağıdaki örneği inceleyiniz.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
liste.Add(4);
liste.Add(5);
liste.Add(6);
liste.Add(7);
liste.Add(8);
liste.Add(9);
MessageBox.Show("Kapasite : " + liste.Capacity);
//Kodları buraya kadar derleyip çalıştırırsak kapasitenin 16 olduğunu görürüz.
liste.TrimToSize();
MessageBox.Show("Kapasite : " + liste.Capacity);
//Son iki satırdaki kodlarla beraber çalıştırılırsa eğer kapasitenin 9 olduğunu göreceksiniz.
Yukarıda gördüğünüz örnekte, kapasitesi 16 olan ArrayList’e TrimToSize() metodu uygulanıp boş alanlar siliniyor ve kapasitesi 9 a indiriliyor.Bu işlem sonucunda bellekten tasarruf sağlanmış olunuyor.
Clear Metodu
Clear() metodu sayesinde ArrayList’teki elemanların hepsi silinecektir.Ancak Remove() metodunda olduğu gibi elemanların alanları silinmeyecektir.Şimdi aşağıdaki örneği inceleyiniz.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
liste.Add(4);
liste.Add(5);
liste.Add(6);
liste.Add(7);
liste.Add(8);
liste.Add(9);
liste.Clear();
MessageBox.Show(liste.Capacity.ToString());
Yukarıdaki liste adındaki ArrayList’imizin kapasitesi 16 dır.Clear() metodu uygulandığı halde mesaj kutusunda kapasiteyi 16 olarak göstermektedir.Demek ki, elemanların alanları silinmiyor.
Contains Metodu
Contains ile koleksiyon içinde belirlenen eleman var mı? yok mu? bakılır.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
MessageBox.Show(liste.Contains(3).ToString());
Yukarıdaki kodu derleyip çalıştırırsanız True değerini verecektir.
Insert Metodu
Belirtilen indekse, belirtilen eleman eklenir.Aşağıdaki kodu inceleyiniz.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
liste.Add(4);
liste.Add(5);
MessageBox.Show(liste[2].ToString());
liste.Insert(2, 33);
MessageBox.Show(liste[2].ToString());
Yukarıdaki kodu incelerseniz,ilk başta mesaj kutusunda 3 değerini yazacaktır.Insert() metoduyla, 2. indekse 33 değerini yazdırıyorum.Son olarak mesaj kutusunda 33 değerini yazacaktır..2. indexten itibaren diğer elemanlar bir sonraki indexe kayacaktırlar.
CopyTo Metodu
Bir ArrayList koleksiyonunu, bir diziye kopyalamamıza yarar.
ArrayList liste = new ArrayList();
liste.Add(1);
liste.Add(2);
liste.Add(3);
liste.Add(4);
liste.Add(5);
int[] sayilar = new int[liste.Count];
liste.CopyTo(sayilar);
for (int i = 0; i < sayilar.Length; i++)
{
MessageBox.Show(sayilar[i].ToString());
}
Yukarıdaki kodları incelerseniz,liste ArrayListini, sayilar dizisine kopyalayacaktır.
Sort Metodu
Bu metod koleksiyonumuzdaki elemanları sıralamamıza yarayacaktır.Bu şekilde kullanırsak int tiplerde küçükten büyüğe doğru,stringlerden alfabetik olarak sıralayacaktır.
ArrayList liste = new ArrayList();
liste.Add(123);
liste.Add(24);
liste.Add(453);
liste.Add(2);
liste.Add(34);
liste.Sort();
for (int i = 0; i < liste.Count; i++)
{
MessageBox.Show(liste[i].ToString());
}

harikulade bir site gencay 🙂
Teşekkür ederim Mustafam 🙂