C# Dilinde ArrayList, HashTable, SortedList, Stack, Queue…
1- ARRAYLIST
using System; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; //arraylist için bu kütüphane ekli olmalıdır namespace NetFrameWork.S6.D1.ArrayListKullanimi { class Program { static void Main(string[] args) { ArrayList A1 = new ArrayList(); //bu şekilde arraylist oluşturduk //BİR ARRAYLIST object tipinde veri aldığından int, string, float her türlü veri alır. A1.Add(1); A1.Add("KODLASANA.COM"); ArrayList A2 = new ArrayList(); A2.Add("TUTKU ÇAKIR"); A1.AddRange(A2); //AddrRange methodu ile A2 ArrayListinin tüm elemanlarını A1 arraylistine ekledik. //şuan a1 listesine baktığımızda toplam 3 elemanın olduğunu görürüz. En son'a A2'den gelen liste eklenmiştir. } } }
ArrayListte Count ve Capacity komutları
static void Main(string[] args) { ArrayList A1 = new ArrayList(); //bu şekilde arraylist oluşturduk //BİR ARRAYLIST object tipinde veri aldığından int, string, float her türlü veri alır. A1.Add(1); A1.Add("KODLASANA.COM"); int Kapasite = 0; int Sayi = 0; Kapasite = A1.Capacity; //kapasite ArrayListlerde 4'er şeklinde artar. 5.eleman eklendiğinde 8 eleman kapasiteli olur4. //Capacity komutu kullanılan arrayListin kapasitesini int veritipinde döndürür. Sayi = A1.Count; //Count komutu arraylistin toplam eleman sayısını verir. ArrayList A2 = new ArrayList(); A2.Add("TUTKU ÇAKIR"); A1.AddRange(A2); //AddrRange methodu ile A2 ArrayListinin tüm elemanlarını A1 arraylistine ekledik. //şuan a1 listesine baktığımızda toplam 3 elemanın olduğunu görürüz. En son'a A2'den gelen liste eklenmiştir. }
ArrayList’e eklenen değerlere tekil olarak ulaşmak, düzenlemek ve silmek
ArrayList A1 = new ArrayList(); //bu şekilde arraylist oluşturduk //BİR ARRAYLIST object tipinde veri aldığından int, string, float her türlü veri alır. A1.Add(1); A1.Add("KODLASANA.COM"); ArrayList A2 = new ArrayList(); A2.Add("TUTKU ÇAKIR"); A2.Add("MYNET.COM"); A2.Add("tutkucakir.com.tr"); A1.AddRange(A2); //AddrRange methodu ile A2 ArrayListinin tüm elemanlarını A1 arraylistine ekledik. //şuan a1 listesine baktığımızda toplam 3 elemanın olduğunu görürüz. En son'a A2'den gelen liste eklenmiştir. //AŞAĞIDAKİ KODLA KOLEKSİYON İÇİNDEKİ VERİYE ULAŞABİLİRİZ object o1 = A1[3]; string s1 = A1[3].ToString(); int I1 = (int)A1[1]; //BİLİNÇSİZ TÜR DÖNÜŞÜMÜ İŞLEMİ A1[1] = "AHMET ÇAKIR"; // BU ŞEKİLDE ARRAYLİST İÇİNDEKİ ELEMAN DEĞİŞTİRİLEBİLİR. A1.Remove("MYNET.COM"); // LİSTE İÇERİSİNDEN BULUR VE KALDIRIR A1.RemoveAt(3); //3.INDEXI BULUR VE KALDIRIR A1.RemoveRange(3,2); //3.INDEXTEN SONRA 2 İNDİS İÇİN SİLME İŞLEMİ YAPAR
ArrayList sıralama işlemleri:
ArrayList A1 = new ArrayList(); //bu şekilde arraylist oluşturduk //BİR ARRAYLIST object tipinde veri aldığından int, string, float her türlü veri alır. A1.Add(1); A1.Add("KODLASANA.COM"); ArrayList A2 = new ArrayList(); A2.Add("TUTKU ÇAKIR"); A2.Add("MYNET.COM"); A2.Add("tutkucakir.com.tr"); A1.AddRange(A2); //AddrRange methodu ile A2 ArrayListinin tüm elemanlarını A1 arraylistine ekledik. //şuan a1 listesine baktığımızda toplam 3 elemanın olduğunu görürüz. En son'a A2'den gelen liste eklenmiştir. //koleksiyonu A-Z SIRALAMA A1.Sort(); // içeriği A-Z ŞEKLİNDE SIRALAR. int varsa hata verdirir. string ile inti karşılaştıramıyor. A1.Reverse(); // koleksiyondaki mevcut indexin tersten sıralar. //reverse indexler test döndüğünden içeriğin karışıklığı farketmez.
ArrayList içindeki çeşitli methodlar
ArrayList A1 = new ArrayList(); //bu şekilde arraylist oluşturduk //BİR ARRAYLIST object tipinde veri aldığından int, string, float her türlü veri alır. A1.Add(1); A1.Add("KODLASANA.COM"); A1.Add("TUTKU ÇAKIR"); A1.Add("MYNET.COM"); A1.Add("tutkucakir.com.tr"); bool kontrol1 = A1.Contains("TUTKU"); //KOLEKSİYONDA BULURSA TRUE DÖNER bool kontrol2 = A1.Contains(1); if (A1.Contains("MYNET.COM")) { int IndexDegeri=A1.IndexOf("MYNET.COM"); // bulduğu içeriğin index değerini verir. A1.RemoveAt(IndexDegeri);//bulduğumu silebilirim A1[IndexDegeri] = "KODLASANA2.COM"; // BULDUĞUMU GÜNCELLERİM }//if ile kontrol edebiliriz. A1.Clear(); //clear methodu ile koleksiyon boşalır. A1.TrimToSize(); // kullanılmayan kapasitesi temizler. ramden düşürür. object [] d1= A1.ToArray(); //tüm dataları dizi olarak bize verir.
ArrayList sıralama örneği
//10 elemanlı string arraylist içindeki değerleri z-a olacak şekilde sıralayın ArrayList OrnekList = new ArrayList(); OrnekList.Add("fatma"); OrnekList.Add("Zeynep"); OrnekList.Add("Ayşe"); OrnekList.Add("Ahmet"); OrnekList.Add("Mehmet"); OrnekList.Add("Fatih"); OrnekList.Add("Burhan"); OrnekList.Add("Hamza"); OrnekList.Add("Tevfik"); OrnekList.Sort(); OrnekList.Reverse(); foreach (object item in OrnekList) { Console.WriteLine(item.ToString()); }
ÖRNEK ArrayList uygulaması:
using System; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameWork.S6.D2.ArrayListProje { class Program { static void Main(string[] args) { ArrayList degerListesi = new ArrayList(); Menu: Console.WriteLine("Menü"); //goto kodunda kullanmak için Menu: etiketini verdik Console.WriteLine("1 - DEĞER EKLE"); Console.WriteLine("2 - DEĞER LİSTELE"); Console.WriteLine("3 - DEĞER ARA"); Console.WriteLine("4 - DEĞER DÜZENLE"); Console.WriteLine("5 - DEĞER SİL"); Console.WriteLine("6 - UYGULAMADAN ÇIKIŞ"); Console.Write("\nSeçiniz: "); string kullaniciSecim = Console.ReadLine(); switch (kullaniciSecim) { case "1": Console.Write("\nDeğer eklemek için bir değer giriniz: "); string veriGirisi = Console.ReadLine(); degerListesi.Add(veriGirisi); Console.WriteLine("\n Veri girişi başarıyla gerçekleştirildi.\n\n--------------------------"); goto Menu; //menüye git anlamındadır. break; case "2": Console.WriteLine("\nDeğerler Listelendi: "); foreach (string item in degerListesi) { Console.WriteLine(item); } Console.WriteLine("\n\n--------------------------"); goto Menu; break; case "3": Console.Write("\nAramak İstediğiniz Değeri Giriniz: "); string arananDeger = Console.ReadLine(); bool aramaSonuc=degerListesi.Contains(arananDeger); if (aramaSonuc) { Console.WriteLine("Aradığınız sonuç bulundu!"); Console.WriteLine("Aradığınız değerin index numarası {0}", degerListesi.IndexOf(arananDeger)); } else{ Console.WriteLine("Aradığınız değere ulaşılamadı."); } Console.WriteLine("\n\n--------------------------"); goto Menu; break; case "4": Console.Write("\nDüzenlemek İstediğiniz Değeri Giriniz: "); arananDeger = Console.ReadLine(); aramaSonuc = degerListesi.Contains(arananDeger); if (aramaSonuc) { Console.WriteLine("Düzenlemek istediğiniz veri için yeni değer giriniz:"); string yeniDeger = Console.ReadLine(); degerListesi[degerListesi.IndexOf(arananDeger)] = yeniDeger; Console.WriteLine("Liste başarıyla güncellendi"); } else { Console.WriteLine("Düzenlemek İstediğiniz değere ulaşılamadı."); } Console.WriteLine("\n\n--------------------------"); goto Menu; break; case "5": Console.Write("\nSilmek İstediğiniz Değeri Giriniz: "); arananDeger = Console.ReadLine(); aramaSonuc = degerListesi.Contains(arananDeger); if (aramaSonuc) { degerListesi.Remove(arananDeger); } else { Console.WriteLine("Silmek İstediğiniz değere ulaşılamadı."); } goto Menu; break; case "6": Environment.Exit(0); break; default: goto Menu; break; } } } }
Hashtable Genel Kullanımı
using System; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameWork.S6.D3.HashTableOrnek { class Program { static void Main(string[] args) { //HASHTABLE GENEL KULLANIMI Hashtable H1 = new Hashtable(); //key ve value değerleri alır. H1.Add("Car", "Araba"); //OBJE OLARAK KEY, OBJE OLARAK VALUE DEĞERİ OLMALIDIR. KEY DEĞERİ BENZERSİZDİR. DATAYA YANİ VALUE ALANINA ERİŞMEK İÇİN KEY KULLANIRIZ. H1.Add("House", "Ev"); //.Add methodu ile yeni değer ekledik. H1.Add("Cars", "Araba"); //value 2-3-4 istediğiniz kadar aynı olabilir ancak keys kısmı benzersiz olmalıdır. /* H1.Add("Cars", "Arabalar"); //aynı keyden var olduğundan hata verir. * HATA ÇIKTISI: * * System.ArgumentException: 'Öğe zaten eklenmiş. Sözlükteki anahtar: 'Cars' Eklenen anahtar: 'Cars'' * * System.ArgumentException: 'Öğe zaten eklenmiş. Sözlükteki anahtar: 'Cars' Eklenen anahtar: 'Cars'' * */ } } }
Hashtable metotları, ArrayListtekilerle benzerdir, kullanımı hemen hemen aynıdır.
using System; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameWork.S6.D3.HashTableOrnek { class Program { static void Main(string[] args) { //HASHTABLE GENEL KULLANIMI Hashtable H1 = new Hashtable(); //key ve value değerleri alır. H1.Add("Car", "Araba"); //OBJE OLARAK KEY, OBJE OLARAK VALUE DEĞERİ OLMALIDIR. KEY DEĞERİ BENZERSİZDİR. DATAYA YANİ VALUE ALANINA ERİŞMEK İÇİN KEY KULLANIRIZ. H1.Add("House", "Ev"); //.Add methodu ile yeni değer ekledik. H1.Add("Cars", "Araba"); //value 2-3-4 istediğiniz kadar aynı olabilir ancak keys kısmı benzersiz olmalıdır. // yardımcı metotlar //liste içinde değer arama işlemi bool kontrol = H1.Contains("Car"); //key içinde arama yapar var ise true döner bool kontrol2 = H1.Contains("Door"); // aranan değer yok ise false döner bool kontrol3 = H1.ContainsKey("House"); //Contains ile aynı işlemi yapar bool kontrol4 = H1.ContainsValue("Araba"); H1.Clear(); // koleksiyon içerisindeki tüm datayı siler... // H1.CopyTo(); int koleksiyonicindekitoplamelemansayisi = H1.Count; H1.Remove("Cars"); // Cars keyini bulur ve siler H1["House"] = "Villa"; // House key olan verinin VALUE alanını Villa olarak yapar. } } }
SortedList kullanımı
using System; using System.Collections; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameWork.S6.D5.SortedListGenel { class Program { static void Main(string[] args) { //key alanı tek veri tipinde olmalıdır ya int ya string buna göre sıralama yapar // sıralama listesidir. SortedList sortedList = new SortedList(); sortedList.Add(100, "Yüz"); sortedList.Add(90, "Doksan"); sortedList.Add(1, "Bir"); sortedList.Add(9000, "Dokuz bin"); // SortedList listeye eklerken sıralayarak ekler... Console.ReadLine(); } } } //hashtable ile aynı metotları kullanır.
Stack kullanımı
Stack s1 = new Stack(); //son giren ilk önce çıkar... mutfakta dizili tabakları düşünün son eklediğinen ilk alınır ve ona yemek doldurulur... s1.Push("bir"); s1.Push("iki"); s1.Push("üç"); s1.Push("dört"); object o1 = s1.Pop(); // datayı karşıya gönderdi ve kendisinden kaldırdı object o2 = s1.Peek(); // datayı karşıya gönderdi, ancak veriyi kendisinden çıkarmadı. sadece gösterme işlemi yaptı.
Queue kullanımı
Queue kuyruk = new Queue(); kuyruk.Enqueue("bir"); kuyruk.Enqueue("iki"); kuyruk.Enqueue("üç"); kuyruk.Enqueue("dört"); //eklenen sırada sıralanır... object o1 = kuyruk.Peek(); // ilk değeri gösterdi - ön izleme gibi bir işlem object o2 = kuyruk.Dequeue(); // değeri gösterir sonrasında da koleksiyon içinden siler.
Bir cevap yazın