Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Kotlin Dersleri serimize bu dersimizde Kotlin Diziler kullanımından bahsedeceğiz.
Dizi(Array), aynı tipten(String ,Int, Double ve ya herhangi bir oluşturacağımız Class tipi) çok sayıda veriyi (belirlediğimiz sayıda) bir arada saklayan veri yapısına dizi(Array) adı verilmektedir.
Neden kullanırız derseniz basit bir örnekle 10 tane sayının ortalamasını alacağız. Dizi kullanmadan bunu 10 tane farklı int değişken tanımlayıp tek tek toplayıp sonra 10’a bölerek bulabiliriz. Fakat bu çok zor bir kullanım ve daha büyük rakamlarda neredeyse imkansız bir hal alabilir. İşte bu sorunu Dizi kullanarak çözebiliriz.
Kotlin Diziler (Dizi Tanımlama)
Dizi’yi val diziAdi = Array(diziUzunluğu){başlangıç değerleri}; şeklinde oluşturabiliriz.
Örnek:
val intArray = Array<Int>(10){0} val stringArray = Array<String>(10){""} val doubleArray = Array<Double>(10){1.0} val charArray = Array<Char>(10){'A'} . . .
Yukarıda gördüğünüz gibi dizilerin uzunluklarını 10 olarak belirledik ve dizilerin tiplerine göre hepsine başlangıç(initial) değer verdik. Verdiğimiz bu initial değerler oluşturulan dizinin tüm elemanlarına değer olarak verildi.
Not : Burda bilmemiz gereken önemli bir nokta dizinin boyutunu diziyi oluşturduktan sonra değiştiremiyoruz. Ne dizinin boyunu arttırabilir ne de azaltabiliriz. Biz bir diziyi oluşturduğumuz an verdiğimiz uzunluğa göre bellekte yer ayrılıyor ve dizinin uzunluğu hep sabit kalıyor.
Diziye Değer Atama:
Aşağıda diziye değer atamanın 2 farklı yolunu göstereceğim.
1.yol:
val mobilhanemListe = Array<Int>(8){0}//8 elemanlı Diziyi oluşturduk mobilhanemListe[0] = 12 //ilk değerini atadık mobilhanemListe[1] = 8//ikinci değerini atadık mobilhanemListe[2] = 34 mobilhanemListe[3] = 19 mobilhanemListe[4] = 26 mobilhanemListe[5] = 31 mobilhanemListe[6] = -5 mobilhanemListe[7] = 78//son değerini atadık
2.yol
set() metotu
val mobilhanemListe = Array<Int>(8){0}//8 elemanlı Diziyi oluşturduk mobilhanemListe.set(0,12)//ilk değerini atadık mobilhanemListe.set(1,8)//ikinci değeri atadık mobilhanemListe.set(2,34) mobilhanemListe.set(3,19) mobilhanemListe.set(4,26) mobilhanemListe.set(5,31) mobilhanemListe.set(6,-5) mobilhanemListe.set(7,78)
Yukarıda oluşturduğumuz mobilhanemListe dizimize değerler atadık. Dikkat ettiyseniz ilk elemana değeri mobilhanemListe[1] ile değilde mobilhanemListe[0] ve ya mobilhanemListe.set(0,12) şeklinde atadık. Bunun sebebi ise Java’da bir dizideki elemanların sıra numaraları, yani indeksleri 0 dan başlar ve boyutundan 1 eksik olarak biter. Yani 10 elemanlık bir dizinin son elemanına değeri diziAdi[9] = x şeklinde atayabiliriz. Aşağıda mobilhanemListe dizimizi görüyorsunuz. Gördüğünüz gibi ilk eleman yani 0. indeks 12 değerini tutuyor.
Diziden Değer Okuma
Diziden değerleri diziAdi[indeks] şeklinde veya diziAdi.get(indeks) şeklinde okuyabiliriz.
println(mobilhanemListe[0]) //0. elemanın değerini yazdırıyoruz. Yani ilk eleman println(mobilhanemListe[3]) //4. elemanın değerini mobilhanemListe[3] şeklinde yazdırıyoruz. Konsol Çıktısı: 12 19
veya
println(mobilhanemListe.get(0)) //0. elemanın değerini yazdırıyoruz. Yani ilk eleman println(mobilhanemListe.get(3)) //4. elemanın değerini mobilhanemListe[3] şeklinde yazdırıyoruz. Konsol Çıktısı: 12 19
Eğer dizinin belli bir indeksine değer ataması yapmadan okumaya kalkarsak, diziyi oluştururken verdiğimiz başlangıç değerini okuruz.
val mobilhanemListe = Array<Int>(8){5}//başlangıç değeri 5 olan 8 birim uzunluğunda dizi oluşturduk println(mobilhanemListe.get(2)) println(mobilhanemListe[4]) Konsol Çıktısı: 5 5
Gördüğünüz gibi biz bir atama yapmadan 2. ve 4.indeksin(beşinci eleman) değeri 5 dönmektedir. Bunun sebebi yukarıda diziyi oluştururken başlangıç değeri veriyor olmamızdır.
Bu dersimde birde dizi boyunu öğrenme işleminden bahsedeceğim. Biz bir diziyi oluştuduğumuz zaman o diziye ait size adında bir int değişken(method değil) otomatik olarak oluşur ve dizinin boyunu tutar.
Yukarıdaki mobilhanemListe dizimizin boyutu 8’dir. Bunu aşağıdaki şekilde öğrenebiliriz.
val diziBoyutu = mobilhanemListe.size; println("Dizi boyutu :"+diziBoyutu); Konsol çıktısı: Dizi Boyutu :8
Arkadaşlar birde şundan bahsetmek istiyorum. Kotlin dilinde JVM’eki primitive type’lar için hazırlanmış Özel bulunmaktadır. Bunların farkı bu dizilerde başlangıç(initial) değer vermemize gerek kalmamaktadır ve performans olarak daha hızlı çalışmaktadırlar. Bu dizileri aşağıda sıralıyorum.
ByteArray
CharArray
ShortArray
IntArray
LongArray
BooleanArray
FloatArray
DoubleArray
Eğer Byte,Char,Short,Int,Long,Boolean,Float,Double (JVM’deki primitive tipler) tiplerinden bir array oluşturacaksak bu tipler için oluşturulmuş dizileri kullanmamız performans açısından daha iyi olacaktır.
Dizi oluşturma:
val intListe = IntArray(8) val doubleListe = DoubleArray(5)
Yukarıda gördüğünüz gibi Int ve ya Double bir array oluştururken onlar için özel hazırlanmış dizileri kullandım. Diziye Değer atama ve değer okuma işlemleri ise normal dizilerden bir farkı bulunmamaktadır.
Bu dersimde dizinin temel mantığından, nasıl oluşturulduğundan, nasıl değer atandığından, değerleri nasıl geri alabileceğimizden, başlangıç değerlerinden ve dizinin boyunu nasıl öğrenebileceğimizden bahsettik. Yani kısaca Kotlin’de ve tüm yazılım dillerinde çok önemli bir yapı olan Dizi‘lere giriş yapmış olduk.
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Kotlin Dersleri için tıklayınız.
39