duyuruElektroArge.com'a Hoşgeldiniz. Üye Olmak İçin Tıklayın. duyuru





houseForum ana sayfa   iletişimİletişim   bilgiSSS  
kırmızı yeşil mavi
ekleKayıt  anahtarGiriş
evForum ana sayfa goE-Kütüphane goE-Ders goC#
 

  • Reklam

Ders 36 - Koleksiyonlar - ArrayList

C Dili Dersleri - Okan Bilke

Ders 36 - Koleksiyonlar - ArrayList

Mesajgönderen okanbilke » 10 Kas 2015 02:10

C#'ta çok fazla fonksiyon bulunmaktadır. Bu fonksiyonlar sayesinde kendinizi fazla zorlamadan çok kolay işlem yapabilirsiniz. Aşağıda bu işlemlerde kullanabileceğiniz dizi fonksiyonları örneklele açıklanmıştır. En genel anlamda dizi değişken aşağıdaki gibi tanımlanabilir. Eleman sayısı daha sonra aktarılacaktır. Daha doğru bir deyişle eklediğiniz her eleman adeti bir artıracaktır.
using System.Collections; // Ekleyin
ArrayList Koleksiyon = new ArrayList(); // Bu şekilde tanımlanır.

Add
Parametre ile belirlenen değişkene ait içeriği ArrayList dizi değişkenine eklemek için kullanılır.
private void button1_Click(object sender, EventArgs e)
{
int[] Degerler = new int[] { 10, 20, 30, 40, 50, 60, 70, 80 };
ArrayList Koleksiyon = new ArrayList(); // dizi tanımlandı
Koleksiyon.Add(Degerler[5]); // Altıncı Elemanı Ekle
this.Text = Koleksiyon[0].ToString(); //60 yazar
}

Şayet Add metodunda dizinin ismi direk kullanılırsa o zaman çok boyutlu bir dizi oluşturulur. Aşağıdaki kodlamayı dikkatle inceleyiniz.
private void button1_Click(object sender, EventArgs e)
{
int[] Degerler = new int[] { 10, 20, 30, 40, 50, 60, 70, 80 };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.Add(Degerler);
this.Text = ((int[])Koleksiyon[0])[3].ToString(); //40 yazar
}

Burada dikkat etmenizi istediğim husus, "Koleksiyon[0]" dışında başka bir indis numarası kullanamayacağımızdır. Çünkü tek boyutlu bir dizi eklediniz. Şimdi dikkatinizi aşağıdaki bloğa çekmek istiyorum.
private void button1_Click(object sender, EventArgs e)
{
int[,] Degerler = new int[,] { {10, 20, 30 }, {40, 50, 60}, {70, 80, 90} };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.Add(Degerler);
this.Text = ((int[,])Koleksiyon[0])[1, 1].ToString(); //50 yazar
}

AddRange
Bir dizideki veya koleksiyondaki bilgileri dizi elemanlarına aktarmak için kullanılır. Mesela listbox kontrolünün tüm elemanlarını diziye almak için kullanılabilir.
private void button1_Click(object sender, EventArgs e)
{
int[] Degerler = new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(Degerler);
this.Text = Degerler[2].ToString(); // 30 Yazar
}

Add
Clear
Dizideki tüm elemanları silmek için kullanılır. Eğer silinen elemanların indis numaralarıyla işlem yapılırsa uygulamanız kırılacaktır.
private void button1_Click(object sender, EventArgs e)
{
int[] Degerler = new int[] { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(Degerler);
Koleksiyon.Clear(); // Temizle
this.Text = Degerler[2].ToString(); // Hata Verir
}

Contains
Parametre ile girilen değişkenin dizinin elemanlarından biri olup olmadığını kontrol etmek için kullanılan bir metoddur. Eğer eleman dizi içeriğinde varsa true yoksa false değerini döndürür.
Aşağıdaki örnekte öncelikle sayi isimli dinamik diziye x dizisinin tüm elemanları aktarılmakta ardından da textBox'a girilen değerle dizi elemanları eşleştirilerek o elemanın daha önceden dizide var olup olmadığı kontrol ettirilmektedir. Eğer varsa diziye eklenmemekte, yoksa diziye ekletilip son eleman olduğu için de yazdırılmaktadır. Öncelikle projemize bir adet listbox, bir adet textbox ve bir adet button ekleyelim.
private void button1_Click(object sender, EventArgs e)
{
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.Clear();
Koleksiyon.AddRange(listBox1.Items);
if(Koleksiyon.Contains(textBox1.Text)==true)
{
MessageBox.Show("İçerik zaten var");
}
else
{
Koleksiyon.Add(textBox1.Text);
}
this.Text=Koleksiyon[Koleksiyon.Count-1].ToString();
listBox1.Items.Clear();
IEnumerator Oku = Koleksiyon.GetEnumerator();
while(Oku.MoveNext())
{
listBox1.Items.Add(Oku.Current.ToString());
}
}

CopyTo
Dizideki elemanları başka bir diziye kopyalamak için kullanılır. Burada tüm elemanları alma zorunluluğu yoktur. Mesela 5. elemandan sonra kopyalama yapılacaksa başlangıç isimli parametreye 4 (ilk eleman 0) yazılır. İkinci parametre ise hangi diziye kopyalanacağı, üçüncü parametre (boyut) Dizinin hangi boyutunun kopyalanacağı, son parametreyle de kaç elemanının kopyalanacağı belirlenebilir.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50, 60, 70, 80 };
int[] YDizi = new int[4];
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.CopyTo(2, YDizi, 0, 4);
this.Text = YDizi[2].ToString(); //50 Yazar
}

Count
Dizi değişkenin eleman sayısını verir.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50};
int Adet;
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Adet = Koleksiyon.Count;
textBox1.Text = Adet.ToString() + " Elemanı Var";
}

IndexOf
Dizi değişken içerisinde aranan isimli değer, birinci parametre ile belirtilen sıradan başlayarak ikinci parametresiyle verilen eleman kadar aranır. Eğer bulunursa geriye bulunduğu sıra döner (ilk elemanın numarası "0" dır). Eğer eleman bulunamazsa geriye "-1" değeri döner.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50};
int Kacinci, Deger = 40;
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Kacinci = Koleksiyon.IndexOf(Deger, 0, Koleksiyon.Count - 1);
textBox1.Text = Kacinci.ToString() + ".ci Eleman";
}

Arama işleminde tipe de dikkat etmeniz gerektiğini hatırlatmak isterim. Yani aşağıdaki şekilde yapacağınız bir arama işlemi "-1" döndürecektir.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50};
int Kacinci;
string Deger = "40";
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Kacinci = Koleksiyon.IndexOf(Deger, 0, Koleksiyon.Count - 1);
textBox1.Text = Kacinci.ToString() + ".ci Eleman";
}

Insert
Dizi değişkende birinci parametre ile belirtilen sıraya ikinci parametre ile belirtilen değeri ekler. Bu işlem sayesinde diziye yeni bir eleman eklendiğini (kayıt sayısının değişeceğini) dikkatinizden kaçırmayınız.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50};
string Deger = "80";
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.Insert(3, Deger); // Araya Ekle
textBox1.Text = Koleksiyon[5].ToString(); // 50 yazar
}

InsertRange
Dizi değişkene birinci parametre ile belirtilen sıradan sonra ikinci parametre ile belirtilen dizi elemanlarını ekler.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50};
int[] YDizi = new int[] { 1000, 2000 };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.InsertRange(3, YDizi);
textBox1.Text = Koleksiyon[4].ToString(); // 2000
}

LastIndexOf
Dizi değişken içerisinde belirlenen elemanın sıra numarasını öğrenmek için kullanılan fonksiyondur. Dikkat edilecek olan husus aramaya sondan başlanacağıdır.
Remove
Parametre ile girilen değeri dizinin içerisinde bulur ve siler. Aşağıda olayı anlamanız için iki kod verilmiştir. Birincisinde "BOLU" değeri silindikten sonra 3. eleman "RIZE" olmakta ve o yazdırılmaktadır. İkinci kodda ise "BOLU" henüz silinmediği için 3. eleman "BOLU"dur ve o yazdırılıyor.
private void button1_Click(object sender, EventArgs e)
{
String[] XDizi = new String[] { "ANKARA", "ISTANBUL", "BOLU", "RIZE", "VAN" };
ArrayList Koleksiyon = new ArrayList();
String Deger = "BOLU";
Koleksiyon.AddRange(XDizi);
Koleksiyon.Remove(Deger);
textBox1.Text = Koleksiyon[2].ToString(); // RIZE Yazar
}

RemoveAt
Dizi değişkenden parametre ile belirtilen index numaralı elemanı silmek için kullanılır.
private void button1_Click(object sender, EventArgs e)
{
String[] XDizi = new String[] { "ANKARA", "ISTANBUL", "BOLU", "RIZE", "VAN" };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.RemoveAt(2);
textBox1.Text = Koleksiyon[2].ToString(); //RIZE
}

RemoveRange
Dizi değişkenden bir aralık elemanlarını silmek için kullanılır. Belirtilen değerler arasındaki elemanlar silinecektir.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50, 60, 70 };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.RemoveRange(1, 3); // ikinci elemandan itibaren 3 sil
textBox1.Text = Koleksiyon[2].ToString(); // 60 Yazar
}

Reverse
Dizi değişkende elemanların yerlerini ters çevirmek için kullanılan bir fonksiyondur. Yani bu metod uygulandıktan sonra ilk elemanla son eleman yer değiştirir. İkinci elemanda sondan bir öncekiyle yer değiştirir bu sayede tüm dizi ters dizilmiş olur. İstenirse dizinin ara elemanları içinde uygulanabilir.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 20, 30, 40, 50, 60, 70 , 80, 90};
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.Reverse(0, 3);
textBox1.Text = Koleksiyon[2].ToString(); // 10 Yazar
}

Sort
Dizi değişkeninin elemanlarını küçükten büyüğe doğru sıralamak için kullanılır. Yani ilk eleman en küçük son eleman en büyük değere sahip olur.
private void button1_Click(object sender, EventArgs e)
{
int[] XDizi = new int[] { 10, 60, 20, 40, 80, 70, 90};
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
Koleksiyon.Sort(); // Sırala
textBox1.Text = Koleksiyon[2].ToString(); // 40 Yazar
}

Şimdi sizlere ArrayList değişkenine eklenen elemanları IENumerator değişkeniyle nasıl kullanabileceğinizi göstermek istiyorum. Dikkatlice takip ediniz. İki örnekte aynı işlemi yapacaktır.
private void button1_Click(object sender, EventArgs e)
{
String[] XDizi = new String[] { "ANKARA", "ISTANBUL", "BOLU", "RIZE", "VAN" };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
IEnumerator Oku = Koleksiyon.GetEnumerator();
while(Oku.MoveNext())
{
MessageBox.Show(Oku.Current.ToString());
}
}

Veya
private void button1_Click(object sender, EventArgs e)
{
String[] XDizi = new String[] { "ANKARA", "ISTANBUL", "BOLU", "RIZE", "VAN" };
ArrayList Koleksiyon = new ArrayList();
Koleksiyon.AddRange(XDizi);
IEnumerable Al = Koleksiyon;
IEnumerator Oku = Al.GetEnumerator();
while(Oku.MoveNext())
{
MessageBox.Show(Oku.Current.ToString());
}
}
okanbilke@gmail.com
Kullanıcı avatarı
okanbilke
Site Kurucusu
Site Kurucusu
 
Mesajlar: 721
Beğendiklerim: 0 mesaj
Beğenilenlerim: 0 mesaj
Kayıt: 15 Mar 2013 13:09
Konum: Ankara

Reklam

Dön C#

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir


  • Reklam
cron