C# Programlama Ders Notları

ArrayList Koleksiyonu

 

ArrayList, dizilerde olduğu gibi veri saklama amacıyla kullanılan bir koleksiyondur. Eleman sayıları dinamik olarak değişir ve farklı tiplerde veri saklama imkânı sunar. ArrayList elemanlarına erişim için index numaraları kullanılır. ArrayList tanımlanırken eleman sayısını belirtmeye gerek yoktur. Dinamik yapısı sayesinde kodlama sırasında veya çalışma anında ekleme, silme, araya ekleme, değerleri değiştirme gibi işlemler yapılabilir.

ArrayList yapısını kullanabilmek için System.Collections; kütüphanesini eklememiz lazım.

using System.Collections;

ArrayList’in oluşturulması aşağıda verilmiştir.

ArrayList liste = new ArrayList();

ArrayList Veri Ekleme:

Koleksiyonlara veri eklemek için Add metodu kullanılır. Koleksiyonlar da diziler gibi index numaralarına sahiptir. ArrayList’e ilk eklenen elemanın index numarası 0 olur, diğer elemanlar da 0’dan başlayarak sıralanır.

ArrayList liste = new ArrayList();
liste.Add(“Bilişim”); // Metinsel
liste.Add(100); // Tam sayı
liste.Add(‘m’); // Karakter
liste.Add(3.14); // Ondalık sayı
liste.Add(true); // Mantıksal

 

ArrayList'de Kullanılan Metotlar ve Özellikler

 

Insert:

Add metodu ile eklenen eleman koleksiyonun en sonuna eklenecektir. Eğer araya yani belli bir index numarasına ekleme yapmak istersek Insert metodunu kullanabiliriz.

ArrayList listem = new ArrayList();
listem.Add("monitör");
listem.Add("harddisk");
listem.Add("cpu");
listem.Add("klavye");
listem.Add("kasa");
listem.Insert(2, "fare");

Yukarıdaki örnekte en son satırda Insert metodu kullanılmıştır. Insert metodu 2 parametre alır. İlki eklenecek elemanın index numarası, ikincisi ise eklenecek değerdir. Örnekte "fare" verisi koleksiyonun 2 indis numaralı elemanına atanmıştır. Bu durumda 2 numaralı eleman ve ondan sonrakiler 1 ileri ötelenmiştir.

InsertRange:

InsertRange metodu ise koleksiyonun istenilen yerine başka bir koleksiyonun elemanlarını sırası ile eklemeye yarar. Alttaki örnekte liste2 isimli koleksiyonun elemanları, liste koleksiyonuna 2 numaralı elemandan başlayacak şekilde araya eklenmiştir.

liste.InsertRange(2, liste2);

Remove:

Koleksiyondan bir değeri silmek için Remove metodu kullanılır. Remove metoduna parametre olarak silinmek istenen elemanın değeri verilir. Verilen değere sahip birden fazla eleman varsa sadece ilk bulunan yani indis numarası daha küçük olan silinir.
listem.Add("monitör");
listem.Add("harddisk");
listem.Add("cpu");
listem.Remove("harddisk");


Yukarıdaki örnekte harddisk değerine sahip olan eleman silinmiştir. Silinen elemandan sonra gelen elemanların indis numaraları 1 geriye kayacaktır. Remove ile silme yapıldığında koleksiyonun eleman sayısı azalacak ancak kapasitesi değişmeyecektir.

RemoveAt:

Eğer silme işlemini elemanın index numarasına göre yapmak istersek RemoveAt metodunu kullanabiliriz. RemoveAt metodu parametre olarak silinecek elemanın indis numarasını alır. Örneğin 5 numaralı elemanı silmek için:
listem.RemoveAt(5);

RemoveRange:

Belirli bir index numarasından itibaren çok sayıda elemanı silmek içinse RemoveRange metodunu kullanırız. Bu metot iki parametre alır. İlki silmeye başlanacak elemanın index numarası, ikincisi ise kaç tane elemanın silineceğidir. listem.RemoveRange(4,3);
Yukarıdaki satır ile koleksiyonun 4 numaralı yani beşinci elemanından itibaren 3 tane eleman silinmiştir.

Clear:

Bir koleksiyonun tüm elemanlarını bir kerede silmek istersek Clear metodunu kullanabiliriz.
listem.Clear();

Capacity:

Koleksiyonun kapasitesini öğrenmek için Capacity özelliği kullanılır. label1.Text = liste.Capacity.ToString();

AddRange:

Bir koleksiyonun tüm elemanlarını başka bir koleksiyona eklemek için AddRange metodu kullanılır. Aşağıdaki örnekte liste2 isimli koleksiyonun tüm elemanları, liste1'in sonuna eklenmiştir.

liste1.AddRange(liste2);

Contains:

Contains metodu ile koleksiyonun içinde bir değerin bulunup bulunmadığını anlayabiliriz. Aşağıdaki örnekte liste isimli koleksiyonun içinde değeri "Ahmet" olan bir eleman varsa sonuç true, yoksa false dönecektir.
if ( liste.Contains("Ahmet") ) label1.Text = "Aranan İfade Bulundu."; else label1.Text = "Bulunamadı.";

IndexOf:

IndexOf metodu ile aranan bir veri koleksiyon içinde bulunduğu taktirde o elemanın index numarası elde edilebilir.
int siraNo = liste.IndexOf("Ali");

LastIndexOf:

LastIndexOf metodu da IndexOf gibi çalışır. Ancak aranan veri birden fazla geçiyorsa en sonuncusunun index numarasını verir.
int siraNo = liste.LastIndexOf("Ali");

CopyTo:

CopyTo metodu ile koleksiyonun elemanlarını uyumlu türdeki bir diziye kopyalayabiliriz. Aktarılacak elemanların türleri hedef dizi ile aynı olmazsa hata verecektir. Ayrıca hedef dizinin uzunluğu (length) da bu işlem için yeterli olmalıdır. Alttaki örnekte 12 elemanlı string türünde bir dizi oluşturulmuş ve liste isimli koleksiyonun tüm elemanları bu diziye aynı sıra ile kopyalanmıştır.

string[ ] dizi1 = new string[12]; liste.CopyTo(dizi1);

CopyTo metodu birkaç şekilde kullanılabilir (aşırı yüklenmiş metot). liste.CopyTo( dizi1, 2) şeklindeki bir kullanım ile koleksiyondaki elemanların dizinin 2 numaralı elemanından başlanarak kopyalanması sağlanabilir. Ayrıca şu şekilde de 4 parametre alacak şekilde de kullanılabilir: liste.CopyTo( koleksiyonIndexNo, diziAdı, diziIndexNo, kopyalanacakElemanSayısı); Bu tür bir kullanım ile koleksiyonun belirtilen numaralı elemanından başlanarak istenen sayıda elemanın, dizinin istenen yerine kopyalanması sağlanabilir. liste.CopyTo(3,dizi1,2,4);

GetRange:

GetRange metodu ile bir koleksiyonun bir kısmı başka bir koleksiyona atanabilir. Aşağıdaki örnekte liste1 koleksiyonunun ilk 4 elemanı liste2 koleksiyonuna atanmıştır.


ArrayList liste1 = new ArrayList();
liste1.Add("Manisa"); liste1.Add("Ankara"); liste1.Add("İzmir"); liste1.Add("Çankırı"); liste1.Add("Muğla");
ArrayList liste2 = new ArrayList(); liste2 = liste1.GetRange(0, 4);

Reverse:

Reverse metodu ile bir koleksiyonun elemanlarının sırası değiştirilebilir, bir diğer ifade ile ters çevrilebilir.


liste.Reverse();

Reverse metodu iki parametre alacak şekilde kullanılarak koleksiyonun sadece belli bir kısmının ters çevrilmesi de sağlanabilir. liste.Reverse( 4, 5 ); Yukarıdaki kod satırı ile liste koleksiyonunun 4 numaralı elemanından itibaren toplamda 5 eleman kendi içerisinde tersten sıralanacaktır.

Sort:

Sort metodu ile koleksiyonun tüm elemanları artan şekilde sıralanabilir. liste.Sort();

 

Yayın Tarihi:20.02.2022

Kaynaklar:

https://www.srdrylmz.com/c-arraylist-sinifi/
https://www.btdersleri.com/ders/koleksiyonlar-arraylist-kullanimi
https://www.gencayyildiz.com/blog/cta-arraylist-koleksiyon-yapisi/
http://meslek.eba.gov.tr/

 

Web hosting by Somee.com