ArrayList kullanmanıza karar verebilecek yardımcı maddeler aşağıda sıralanmıştır.
- Dizinin elemanlarını çalışma zamanında değiştirme ihitiyacı duyuyursanız,
- Çalışma anında diziden eleman silmeniz gerekiyorsa,
- Dizinin herhangi bir bölümüne yeni bir eleman eklemek istiyorsanız,
- Dizi içerisinde kolay bir şekilde eleman araması yapmak istiyorsanız.
ArrayList sınıfından yararlanıp liste tipinde bir koleysiyon hazırlayabilirsiniz. ArrayList'e çalışma zamanında eleman eklemesinin son derece kıolay olduğunu söylemiştik bunun aslında arka planda yatan felsefesi şu şekildedir. ArrayList tipindwe bir koleysiyon hazırlandığında kapasitesi belirtilmediğinde bunun eleman sayısı 0 olarak ayarlanmaktadır. İlk eleman eklendiğinde ise kapasitesi 4 yapılır. Eğer belirli bir sayıda elemana sahip ArrayList nesnesi hazırlanaak ise kapasiteyi yapıcı metoda parametre olarak verebilirsiniz. Koleksiyonun mevcut kapasitesi Capability
özelliği içerisinde tutulmaktadır.
using System;
using System.Collections; //Koleksiyon namespace'i eklenmiştir.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ArrayList liste = new ArrayList(10);
Console.WriteLine(liste.Capacity);
}
}
}
10
Press any key to continue . . .
ArrayList nesnesinin mecut kapasitesi yeterli gelmediğinde geri planda kapasite iki katına çıkarılmaktadır ve bu durum sisteme bir yük getirecektir ancak üstad Memik Yanık bunu çok kafaya takmamamızı söylemektedir...
ArrayList'lere eleman eklerken Add() metodu kullanılmaktadır. Aynı zamanda Add() metodu eklenen elemanın sıra numarasını geriye döndürmektedir.
using System;
using System.Collections; //Koleksiyon namespace'i eklenmiştir.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ArrayList liste = new ArrayList(10);
//Console.WriteLine(liste.Capacity);
liste.Add("Galatasaray");
var sira = liste.Add("Fenerbahçe");
Console.WriteLine(sira);
}
}
}
1
Press any key to continue . . .
Koleksiyon sınıflarına, değişkenin tanımlama satırında eleman ekleme imkanı C# 3.0 ile gelmiştir. Aşağıda verilen kod çalışınca 3 elemanlı bir ArrayList elde etmiş olursunuz.
ArrayList takimlar = new ArrayList()
{
"Galatasaray",
"Fenerbahçe",
"Beşiktaş"
};
Yeni elemanı koleksiyonun sonuna eklemekyerne istediğiniz bir yere eklemek isterseniz Add() yerine Insert() kullanmanız gerekmektedir.
ArrayList takimlar = new ArrayList()
{
"Galatasaray",
"Fenerbahçe",
"Beşiktaş"
};
takimlar.Insert(2, "Bursaspor");
ArrayList ile arama işlemleri yapmak son derece kolaydır. Contains()
ve IndexOf()
gibi metotlar sayesinde bunları gerçekleştirebiliriz.
Contains metodu parametre olarak aldığı bilgiyi arar eğer bulursa true döndürür.
Arama yaptığınız elemanın sıra numarasını öğrenme istiyorsanız IndexOf() kullanılabilir. Eğer aradığınız eleman mevcut değil ise -1 dönecetir.
ArrayList takimlar = new ArrayList()
{
"Galatasaray",
"Fenerbahçe",
"Beşiktaş"
};
takimlar.Insert(2, "Bursaspor");
Console.WriteLine(takimlar.Contains("Galatasaray"));
Console.WriteLine(takimlar.IndexOf("Galatasaray"));
Console.WriteLine(takimlar.IndexOf("Trabzonspor"));
True
0
-1
ArrayList'lerde eleman sayısını öğrenmek için Count
özelliği kullanılır. Bu bir metot değildir. Aynı zamanda eleman silme için ise Remove()
, RemoveAt()
, RemoveRange()
gibi metotlar kullanılabilir.
ArrayList takimlar = new ArrayList()
{
"Galatasaray",
"Fenerbahçe",
"Beşiktaş"
};
takimlar.Insert(2, "Bursaspor");
Console.WriteLine("Elaman sayısı:" + takimlar.Count);
takimlar.Remove("Bursaspor");
Console.WriteLine("Elaman sayısı:" + takimlar.Count);
takimlar.RemoveAt(1);
Console.WriteLine("Elaman sayısı:" + takimlar.Count);
Console.WriteLine("Liste:");
for(int i =0; i < takimlar.Count; i++)
{
Console.WriteLine(takimlar[i]);
}
Elaman sayısı:4
Elaman sayısı:3
Elaman sayısı:2
Liste:
Galatasaray
Beşiktaş
Press any key to continue . . .
Birde GetEnumerator()
metodumuz vardır. Bu metot sayesinde aslında bir nevi enum ifadelerine benzer yapılar ede edebiliriz. Örnek bir senaryodan gitmek istersek bir butona basıdığında textbox üzerinde yazacak olan ifadenin sürekli değişmesini istiyorsanız bunun gibi bir yapı kullanılabilir. MoveNext()
metodu sayesinde sürekli olarak indis numarası değiştirilecektir.
ArrayList takimlar = new ArrayList()
{
"Galatasaray",
"Fenerbahçe",
"Beşiktaş"
};
takimlar.Insert(2, "Bursaspor");
IEnumerator a = takimlar.GetEnumerator();
a.MoveNext();
Console.WriteLine(a.Current.ToString());
a.MoveNext();
Console.WriteLine(a.Current.ToString());
Galatasaray
Fenerbahçe
Press any key to continue . . .
Son olarak önemli bir nokta ile yazıyı tamamlamak istiyorum. C#'ın ilk sürümlerinden beri ArrayList'ler çok kullanılan koleksiyon sınıfı iken 2. sürümünden sonra ArrayList ile benzer işleve sahip generic desteği olan List snıfı tercih edilmeye başlanmıştır. Generic konusunu ilerleyen yazılarımızda ayrıntısı ile değineceğiz ancak şuan sadece bunu bilmeniz yeterlidir.
İlk Yorumu Siz Yapın