Serdar YILMAZ / Software Developer
Bizimkisi Bir “Bug” Hikayesi...
Kocaeli/Körfez
Serdar Yılmaz C# – ArrayList Sınıfı

C# – ArrayList Sınıfı


C# – Koleksiyonlar” başlıklı yazımızda koleksiyonların avantajlarından, dezavantajlarından bahsedip, genel bir bilgi vermiştik. Bu yazımızda ise bir koleksiyon sınıfı olan ArrayList‘den bahsedeceğiz.

Değişken Tip

Standart diziler aynı veri tipindeki elemanları içermektedir. Örneğin int tipinde oluşturduğumuz bir dizide sadece tam sayı tutabiliriz. Ancak ArrayList’de böyle bir kısıtlama bulunmamaktadır. Farklı veri tipindeki öğeleri ArrayList’e ekleyebiliriz.

Dinamik Boyut

Standart diziler sabit boyutludur; programlama aşamasında dizinin boyutu belirtilir ve programın çalışması sırasında değiştirilemez. ArrayList ise değişken boyutludur. Eleman ekleme ve çıkarma durumuna göre boyutu dinamik olarak değişmektedir.

ArrayList’in başlangıç kapasitesi 4’tür. Mevcut kapasite yeterli gelmediğinde, arkaplanda kapasite 2 katına çıkarılmaktadır. Yukarıdaki örneği inceleyecek olursak; for döngüsü ile 0’dan 8’e kadar olan sayılar koleksiyonumuza eklenmektedir. Başlangıç kapasitesi 4 olan koleksiyona, 5. sayı eklenmek istenildiğinde, koleksiyon kapasitesini 2 katına çıkararak 8 yapmaktadır. Aynı şekilde 9. sayı ekleneceği zaman mevcut kapasite tekrar 2 katına çıkarılıp 16 yapılmaktadır.

Metotlar ve Özellikler

  1. Nesne Oluşturma
    ArrayList sınıfından bir nesne oluşturuyoruz. Bu nesne, koleksiyondaki nesnelerin referanslarını tutacaktır.

    ArrayList DinamikDizi = new ArrayList();
  2. Add(object x) Metodu
    Add() metodu ile veri tipi fark etmeksizin koleksiyon içerisine her türlü öğeyi ekleyebiliriz.

    DinamikDizi.Add("Serdar");
  3. Remove(object x) Metodu
    Remove() metoduna parametre olarak girilen ifade koleksiyon içerisinden silinir.

    DinamikDizi.Remove("Serdar");
  4. Clear() Metodu
    Clear() metodu koleksiyon içerisindeki tüm öğeleri silmektedir.

    DinamikDizi.Clear();
  5. Count Özelliği
    Koleksiyon içerisinde yer alan elemanların sayısını döndürmektedir.

    int ElemanSayisi=DinamikDizi.Count;
  6. Capacity Özelliği
    Koleksiyonun kapasitesinin döndürmektedir.

    int Kapasite = DinamikDizi.Capacity;
  7. Contains(object x) Metodu
    Koleksiyon içerisinde parametre olarak girilen öğeyi arar. Öğe bulunursa TRUE, bulanamazsa FALSE döndürür.

    bool varmi = DinamikDizi.Contains(456);
  8. Sort() Metodu 
    Koleksiyon içerisindeki öğeleri artan sırada sıralamaktadır. Sıralama işleminin gerçekleşebilmesi için öğelerin karşılaştırılabilir olması gerekmektedir.

    DinamikDizi.Sort();
  9. BinarySearch(object x) Metodu
    Koleksiyon içerisinde parametre olarak girilen değeri arar. Değer bulunursa değerin indeks numarasını döndürür. Eğer değer bulunamaz ise negatif bir değer döndürür. Bu metodu kullanabilmek için önce Sort() metodu ile koleksiyonu sıralamamız gerekmektedir.

    int indeks=DinamikDizi.BinarySearch(18)
  10. CopyTo(Array ar, int i) Metodu
    Koleksiyon içerisindeki tüm öğeleri, ar dizisine i.indeksinden başlayarak kopyalayacaktır. ar dizisi koleksiyondaki öğelerin tipiyle uyumlu olmalıdır.

    string[] Dizi = new string[20];
    DinamikDizi.CopyTo(Dizi, 2);
    
  11. ToArray() Metodu
    Koleksiyonda yer alan elemanların kopyasını içeren bir dizi döndürür. Belirli işlemler de daha hızlı işlem süreleri elde etmek için bu yöntem kullanılabilir.

    int[] Dizi = new int[20];
    Dizi =(int[]) DinamikDizi.ToArray(typeof(int));
    
  12. TrimToSize() Metodu
    Koleksiyonun kapasitesini, eleman sayısına eşitler.

    DinamikDizi.TrimToSize()
  13. Reverse() Metodu
    Koleksiyonun içeriğini ters çevirir.

    DinamikDizi.Reverse()
  14. RemoveRange(int i, int c) Metodu
    Koleksiyon içerisinde, i. indeksten başlayarak c adet elemanı çıkarır/siler.

    DinamikDizi.RemoveRange(1, 3);
  15. AddRange(Koleksiyon c)
    c koleksiyonunu, çağrıda bulunulan koleksiyonun sonuna ekler.

    ArrayList Ek= new ArrayList();
    DinamikDizi1.AddRange(Ek);
    
  16. InsertRange(int i, Koleksiyon c)
    c koleksiyonunun tüm elemanlarını, çağrıda bulunulan koleksiyonun i. indeksinden itibaren eklemeye başlar. Çağrıda bulunulan koleksiyonun elemanları silinmez, sadece c koleksiyonunun tüm elemanlarına yer açacak şekilde ötelenir.

    ArrayList Yeni=new ArrayList();
    DinamikDizi1.InsertRange(1, Yeni);
    
  17. LastIndexOf(object x) Metodu
    Parametre olarak girilen öğenin rastlanıldığı son konumun indeksinin döndürür. Değer mevcut değilse -1 döndürür.

    int indeks=DinamikDizi.LastIndexOf("serdar")
  18. GetRange(int i, int c) Metodu
    Çağrıda bulunulan koleksiyonun i.indeksinden başlayarak c adet elemanını içeren bir nesne döndürür. Döndürülen nesne, çağrıda bulunan nesne ile aynı elemanlara referansta bulunur.

    ArrayList Parca = DinamikDizi1.GetRange(2, 3);
  19. SetRange(int i, Koleksiyon c)
    c koleksiyonunun tüm elemanlarını, çağrıda bulunulan koleksiyonun i. indeksinden başlayarak üzerine yazar.

    DinamikDizi.SetRange(2, YeniDizi);

Uygulama

  1. Koleksiyondan Öğeleri Çekme
                ArrayList DinamikDizi = new ArrayList();
    
                // Koleksiyona 128,18,56 değerlerini ekledik.
                DinamikDizi.Add(128);
                DinamikDizi.Add(18);
                DinamikDizi.Add(56);      
    
                // foreach ile koleksiyonun tüm elemanlarını ekrana yazdırdık.
                foreach (var i in DinamikDizi)
                    Console.WriteLine(i);
                
                // 18 değerini koleksiyondan çıkardık.
                DinamikDizi.Remove(18);
    
                // Bu sefer for döngüsü ile koleksiyonun tüm elemanlarını ekrana yazdırdık.
                for (int i = 0; i < DinamikDizi.Count; i++)
                    Console.WriteLine(DinamikDizi[i]);
    
  2. Koleksiyonda Arama Yapma
                ArrayList DinamikDizi = new ArrayList();
    
                // Koleksiyona 128,18,56 değerlerini ekledik.
                DinamikDizi.Add(128);
                DinamikDizi.Add(18);
                DinamikDizi.Add(56);
    
                /* 56 değeri koleksiyonda mevcut olduğu için Contains() metodu TRUE
                 * döndürecek ve ekrana "Mevcut." yazılacaktır. */
                if (DinamikDizi.Contains(56))
                    Console.WriteLine("Mevcut.");
                else
                    Console.WriteLine("Mevcut Değil.");
    
    
  3. Herhangi Bir Öğenin İndeks Numarasını Bulma
                ArrayList DinamikDizi = new ArrayList();
    
                // Koleksiyona 128,18,56 değerlerini ekledik.
                DinamikDizi.Add(128);
                DinamikDizi.Add(18);
                DinamikDizi.Add(56);
    
                // Koleksiyon içerisindeki öğeleri artan sırada sıraladık. (18-56-128)    
                // NOT: BinarySearch() metodunu kullanabilmek için sıralama yapmamız gerek.   
                DinamikDizi.Sort();
    
                // 18 değerinin indeks numarasını ekrana yazdırdık. (İndeksi:0)
                Console.WriteLine(DinamikDizi.BinarySearch(18));
    

Yazar: Serdar Yılmaz


Bu İçeriği Arkadaşlarınızla Paylaşmak İster misiniz?

3 Yorum

Bir Yorum Yapın