ArrayList nesnesinde arama yaparken BinarySearch, IndexOf, LastIndexOf ve Contains metotlarını kullanabilirsiniz. Contains metodu parametre olarak aldığı object tipindeki bilgiyi ArrayList nesnesinde arar. Bulursa geriye true, bulamazsa false gönderir.
bool sonuc = Takimlar.Contains("Ankara");
if (sonuc == true)
MessageBox.Show("Bu eleman mevcut”);
ArrayList’te arama yaparken aranan elemanın sıra numarasını öğrenmek istiyorsanız IndexOf metodunu kullanabilirsiniz. IndexOf() metodunun 1, 2 ve 3 parametreye sahip sürümleri bulunmaktadır. IndexOf metodu aşağıdaki gibi kullanıldığında arama ArrayList nesnesinin bütün elemanlarını kapsayacak şekilde yapılır.
int sira = iller.IndexOf("Bursa");
textBox1.Text = sira.ToString();
Arama işlemini ArrayList’in bütün elemanlarını kapsayacak şekilde yapmak istemiyorsanız aramanın başlamasını istediğiniz elemanın sıra numarasını IndexOf() metoduna 2. parametre olarak vermelisiniz. IndexOf() metodu aşağıdaki gibi kullanılırsa arama 3. elemandan itibaren yapılır ve söz konusu il bulunamayacağı için geriye -1 gönderilir.
private void arama_Click(object sender, EventArgs e)
{
ArrayList iller = new ArrayList();
iller.Add("İstanbul");
iller.Add("Ankara");
iller.Add("İzmir");
iller.Add("Adana");
int sira = iller.IndexOf("Ankara", 2); // sira -1 olur.
}
ArrayList nesnesinde içeriği aynı olan birden fazla eleman varsa söz konusu bilgiye sahip son elemanın sıra numarasını öğrenmek istiyorsanız LastIndexOf() metodunu kullanabilirsiniz. Aşağıda verdiğim kodda ArrayList nesnesi içinde aradığım “Adana” içeriğine sahip 2 eleman bulunmaktadır. Aramayı LastIndexOf() metodu ile yaptığım için formun başlığına 3 yazılır. Aramayı LastIndexOf yerine IndexOf metodu ile yapmış olsaydım bu kez içeriği “Adana” olan son elemanın sıra numarası yerine ilk elemanın sıra numarasını bulurdum.
private void arama_Click(object sender, EventArgs e)
{
ArrayList iller = new ArrayList();
iller.Add("İstanbul");
iller.Add("Adana");
iller.Add("İzmir");
iller.Add("Adana");
int sonuc = iller.LastIndexOf("Adana");
this.Text = sonuc.ToString();
}
Arama yaparken BinarySearch metodunu kullanabilirsiniz. Aşağıdaki gibi kullanılan BinarySearch metodu kendisine parametre olarak verilen elemanı ArrayList’te arar. Bulursa geriye söz konusu elemanın sıra nosunu, bulamazsa geriye sıfırdan küçük bir değer gönderir. BinarySearch metodu ile ArrayList nesnesinde sağlıklı arama yapabilmek için ArrayList nesnesinin elemanlarının sıralı olması gerekiyor.
private void arama_Click(object sender, EventArgs e)
{
ArrayList iller = new ArrayList();
iller.Add("İstanbul");
iller.Add("Adana");
iller.Add("İzmir");
iller.Add("Ankara");
iller.Sort();
int sonuc = iller.BinarySearch("Ankara");
this.Text = sonuc.ToString();
}