Kotlin Koleksiyonlar (Collections) – Ders 2

Kotlin Koleksiyonlar (Collections) – Ders 2

Bu bölümde veri gruplarını yani koleksiyonları inceleyeceğiz. Diziler (arrays), listeler (list), tekrarlı olmayan listeler “set”, bir tanımlayıcı ve değerin olduğu listeler “map” inceleyeceğiz.

Diziler (Arrays)

Kotlinde diziler, statik yani büyüklüğü baştan belirlenmiş veri topluluklarına denir.

val myBrothers = arrayOf ("Volkan", "Oguzhan", "Hasan" )
println(myBrothers.size())

Boyutunun 3 olduğunu görürsünüz ekranda. Şimdi burada 0. (sıfırıncı) indis “Volkan”, 1. “Oguzhan” , 2. “Hasan” ‘dır. Burada indislerin sıfırdan başlanıldığı unutulmamalıdır.

myBrothers.set(0, Furkan) //0. indisi furkan yapar
myBrothers.sort()  //sıralama yapar
println(myBrothers[1]) 

Bunu yaptığımda ekranda “Hasan”‘ı gösterir. Çünkü alfabetik olarak sıralandığında dizinin 1. indisindeki eleman (yani 2. elemanı) “Hasan” olur.

Peki diziye olmayan bir sıralamayı eklemeye çalışsaydım ne olacaktı ?

myBrothers[3] = "Ümit"
println(myBrothers[3])

hata mesajı alırdım. Çünkü bu statik başlangıçta boyutu belirlenen bir dizi. Ben buna sondan ekleme yapamam. Yapacağım eklemelerde bir önceki değeri silip üzerine yazılacaktır. Eğer deneyenler olursa : ArrayIndexOutOfBoundsException hatası alındığını görecektir. Uygulama çökecektir. Bu tamamen istenmeyen bir durumdur. Bu sebepten boyutu bilinen dizilerde boyutunca işlem yapılmalıdır.

Listeler (Lists)

Dinamik bir dizi yapısıdır diyebiliriz. Sonradan eklemeler, baştan ekleme vs. yapılabilir. Hadi bir anime listesi yapalım ve bu animeler stringlerden oluşacağı için tanımlamasını yaparak atama işlemi yapalım bu sefer.

    val myAnime = arrayListOf <String>()
    myAnime.add("One Piece")
    myAnime.add("Shokugeki no Souma")
    myAnime.add("Bleach")
    myAnime.add("Fairy Tail")
    
    println("first anime : ${myAnime[0]}")

Şimdi burada görüldüğü gibi en baştan bir atama yapmamıza gerek yok dizilerdeki gibi. Bu bize fazla fazla esneklik kazandırıyor zaten. İstersek başta da tanımlamalar yapabilirdik. Fakat yine ekleme, çıkarma her türlü yapardık. Bu bize bir esneklik, dinamiklik kazandırıyor. Örneğin, bir veritabanından verileri çekiyorsun ve ne kadar veri geldiğini bilmiyorsun. Bu durumda arrayList kullanmamız gerektiği çok açıktır.

NOT : Ayrıca burada listelerden bağımsız bir detay daha var. Son satıra bakarsanız tırnak işareti içerisinde 0. elemanı çağırma işlemi yapmışız. Java’dan farklı olarak Kotlin’de String kısmın içine ${} ile istediğimiz kodları yazabiliriz. $ kendinden sonraki {} içindeki kısımı tırnak içerisinin dışındaymış gibi çalıştıracaktır.

SET

Set ise kısaca tekrarlı olmayan liste diyebiliriz. Küme mantığı vardır. Hani siz nasıl bir kümeye aynı değerden eklemezsiniz. Set de aynı şekildedir. Kısa bir tanımlama yapalım.

val citiesList = setOf ("Ankara","Ankara","İstanbul" ,"Antalya","Çorum" )
println(citiesList.size())

4 sonucunu verecektir. Tamamen büyük-küçük ayrımı yaparak aynı olan değerleri 1 değer olarak tutar. Bu durumda 1. indis doğal olarak “İstanbul ” olacaktır.

HashSet

HashSet Set ile aynı aslında. HashSet Setin özelliklerini taşır. Bunu çağırırken bir nesne olarak değil de doğrudan bir sınıf olarak çağırıp oluşturuyoruz.

val myNumbers = HashSet <Int> (1,2,3,1,4,5,3)
println(myNumbers.size())

5 değerini ekranda yazdıracaktır.

MAP

Bir anahtar ve bir değerin olduğu topluluklardır diyebiliriz. Mesela bir öğrenci listesi yapıyorsun. Bu listede ise öğrenci no ve öğrenci adını tutmak istiyorsun. Bu tam sana göre. Öğrenci numarası yani anahtar tamamen benzersiz olmalıdır. Map içinde aynısı geçerlidir. Anahtar kısmı tamamen diğerlerinden her zaman farklı olmalıdır.

val studentMap = mapOf<Int, String>(19 to "Volkan")
println(studentMap[19])

Ekranda “Volkan” yazdırır. Aynı dizideki gibi sonradan veri eklenmez. Eklemek için hashmap oluşturmalıyız.

HashMap

var studentHashMap = hashMapOf <Int, String>() 
studentHashMap.put (1, "Ceyda")
studentHashMap.put (2, "Selim")
println (studentHashMap[1])

ekranda “Ceyda” yazdıracaktır. Aynı tanımlama şu şekildede yapılabilirdi.

var studentHashMap = hashMapOf  <Int, String>(1 to "Ceyda", 2 to "Selim") 
println(studentHashMap[1])

Koleksiyonlarda bu kadardı. İyi Çalışmalar

Kaynaklar : https://kotlinlang.org/docs/tutorials/

Medium : https://medium.com/@dvolkan2001/kotlin-koleksiyonlar-collections-ders-2-3ab74e3f3444

Bir cevap yazın