Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

ArrayList Sınıfı ile Dinamik Dizi Yönetimi

C# programalama dilini öğrenmek ve bu konuda kendini geliştirmek isteyen yazılımcılara yeniden merhabalar :)

Nesne yönelimli programalama makale dizimizi tamamladıktan sonra .Net Framework dünyasına hızlı bir giriş yapıyor ve ArrayList sınıfını öğreniyoruz.

Hatırlarsanız C# ile dizileri öğrendiğimiz makalemizde değişken ve değerlerimizi tek bir diziye ekleyerek daha sonra kolaylıkla erişebiliyorduk, böylece birden çok
değişken kullanmadan değerleri tek bir yerde toplayabiliyorduk.Ancak klasik dizi yapısında maalesef bazı kısıtlamalarla karşılaşıyorduk, arraylist ile daha dinamik ve aktif programalama öğreneceğiz.

ArrayList sınıfı tıpkı klasik diziler gibi tüm değerleri sırasıyla ve düzenli bir şekilde içerisinde barındırır, ancak dizilerdeki gibi baştan kapasite tanımlaması yapılmamaktadır.Bu sayede içerisine eleman eklendikçe otomatik biçimde içerisindeki
eleman sayısı kadar kapasitesini artırıp azaltabilir.

Ayrıca klasik dizilerdekinden farklı olarak tip bağımlı değildir.Bu şu anlama geliyor;

c#-array

klasik dizi tanımlamasında diziye yalnızca string değerler ekleyebiliyorken ArrayList ile tip bağımsız olduğumuz için diziye string,int,bool veya kendi sınıfımızdan türettiğimiz instance'ları dahi kolaylıkla ekleyebiliyoruz.Bu yönün diğer adı tip güvensiz olarak geçer bazı kaynaklarda..

Şimdi gelelim birkaç örnek uygulamaya,öncelikle Visual Studio uygulamamızı açıyor ve yeni bir Windows Form uygulaması açıyoruz:

visual-studio-form

Şimdi formumuza yeni bir buton ekliyoruz ve butonumuza tıklayacak click eventine(olayına) geçiyoruz:

c-sharp-button-click

ArrayList, sınıfı daha önce öğrendiğimiz dinamik sınıflardan biri olduğu için öncelikle ArrayList sınıfından instance alıyoruz:

system-collections

Bu sınıfı kullanabilmek için .Net Framework kütüphanesinden Collections alt sınıfına ihtiyacımız olacak,dolayısıyla projemize eklememiz gerekiyor.Kolay ve hızlı bir şekilde bir kütüphaneyi projemize eklemek için yukarıda yazdığımız ArrayList yazısına mouse ile odaklandıktan sonra klavyemizden Ctrl+. (nokta) işareti ile smart tagı açıyoruz:

arraylist-smart-tag

using ifadesiyle başlayan seçimi tıklayarak System.Collections'ı ekliyoruz.Ardından instance almaya hazırız:

arraylist-class

Bu sınıf bir nevi dizi yapısında olduğu halde klasik dizilerden (array) bir farkı da indist "[ ]" işaretleri yerine Add() metodu ile içerisine elemanlar ekleyebiliyoruz:

arraylist-add-item

Elbette ArrayList sonuçta bir dizi gibi davrandığı için her durumda elemanlara yine indist işaretleri ile erişmek zorundayız:

arraylist-item-index

Burada dizi indexinin sonuna ToString() ifadesini koyma amacımız az önce bahsettiğimiz tip bağımsız olmasından kaynaklanmaktadır.Diziye her türden eleman eklenebildiği için ve string,int gibi bütün değişken tipleri nesne yönelimli programalamada nesne (object) olduğu için ArrayList dizisi her durumda object döndürür.
Dolayısıyla diziden gelen tip object olduğu ve daha önce diziye string ifadeler eklediğimiz için gelen değeri yeniden string ifadeye çeviriyoruz.Devam edelim..

Dizideki eleman sayısını ise Count property'si ile kolaylıkla elde edebiliyoruz:

arraylist-count-property

ve bu property bize sayısal olan int tipini verdiği için gelen değeri yine int değişkene atıyoruz.

Count property'sinin en büyük avantajı ise diziyi döngü içerisine soktuğumuzda, döngünün ne kadar dönüş yapacağını belirtmemize olanak sağlamaktadır.
Örneğin; dizideki bütün elemanları ekranda gösterelim:

arraylist-list-items

arraylist-for-loop

Ayrıca RemoveAt() metodu ile dizi içerisindeki bir elemanın dizi index değerini vererek diziden kolaylıkla çıkarabilir ya da dizi elemanının ne olduğundan emin isek doğrudan Remove() metoduyla çıkarabiliriz.
Örneğin;

arraylist-remove-item

ArrayList konusu ise klasik dizilerden farklı olarak boş index kavramı yer almamaktadır,bu sayede dizimizi for gibi bir döngü içerisine soktuğumuzda boş eleman gelme olasılığı kalkmakta ve programımızın beklenmedik bir şekilde çökmesini engellemektedir.

Bu konuyu hızlıca atlayalım ve ArrayList'in bir diğer güzelliğinden bahsedelim; bu sınıf ile oluşturulan bir dizideki elemanları Sort() metodu ile kolaylıkla sıralayabiliyoruz.Bu sıralama alfabetik A'dan Z'ye ve sayısal olarak 0'dan en büyük değere sahip elemana kadar sıralama şansına sahibiz:



arraylist-liste-siralama

Bir diğer güzel özellik ise diziyi ters çevirebilme olayıdır, Reverse() metodu ile dizideki elemanlar simetrik bir biçimde yer değiştirebiliyor:

arraylist-ters-cevirme



Sıralama ve ters çevirme konusunda herhangi bir engelimiz bulunmamaktadır,istediğiniz kombinasyonda listede değişiklik yapabilirsiniz.

ArrayList konusu ile ilgili sanırım şimdilik bilmemiz gerekenler bu kadarıyla sınırlı kalsa yeterli diye düşünüyorum; gelecek makalemizde kaldığımız yerden devam edeceğiz.

Bir sonraki makalemizde görüşmek üzere hoşçakalın esen kalın.. :)

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu