Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız Kotlin Dersleri yazı serimizde bu dersimizde Kotlin Set kullanımını ve methodlarını anlatacağız.
Önceki yazılarımızda Arraylist kullanımından bahsetmiştik. O dersimizi okumadıysanız öncelikle o dersimizi okumanızı tavsiye ederim. Derse gitmek için tıklayınız.
Kotlin Set
Koleksiyon oluşturmak için kullanabileceğimiz başka bir sınıf ise Set sınıfıdır. Set sınıfı ile oluşturulan bir koleksiyonda tekrarlanan öğeler bulunmaz. Map, List ve Arrayler de aynı eleman programda defalarca kullanılabilir veya birden fazla bulunabilir. Fakat Set sınıfında böyle bir durum söz konusu değildir. Set sınıfının içindeki öğeler bir dizi biçiminde değil, bir torbaya doldurulmuş biçimdedir şeklinde düşünülebilirler. Set kavramı Matematikteki Kümeler kavramından gelmektedir.
Set sınıfı iki temel üzerine inşa edilmiştir :
- immutable : setOf() ile oluşturulan yapılarda sadece okuma işlemi yapılır.
- mutable : mutableSetOf() ile oluşturulan yapılarda ise üzerine ekleme, güncelleme ve silme işlemleri yapılabilir.
İlerleyen derslerde bu metodlarla ilgili detaylı bir blog yazısı yayınlayacağım. Şimdilik temel olarak bu bilgiler yeterlidir.
Set tanımlamak
var my_Set = setOf(58,51,9,”halil”,”taha”,19.97,null,false)
var new_set = setOf
var my_Set = setOf(58,51,9,“halil”,“taha”,19.97,null,false)
var new_set = setOf<String>(“halil”,“ibrahim”,“yusuf”,“emre”) |
Set tanımlanırken iki tip yöntem kullanılır. Örnekte de görüldüğü gibi ya Set sınıfının değeri verilmeden bütün değerlerden oluşan bir Set oluşturulur ya da oluşturacağımız Set sınıfını yalnızca String tipinde olsun ya da yalnızca int tipinde olsun şeklinde sınırlandırabiliriz.
Set sınıfına item eklemek
Set sınıfına bir item eklemek için add() komutu kullanılır.
var my_Set = mutableSetOf
my_Set.add(19.03)
my_Set.add(19.05)
my_Set.add(19.07)
var my_Set = mutableSetOf<Double>() my_Set.add(19.03) my_Set.add(19.05) my_Set.add(19.07) |
Örnekte Double türünde boş bir set sınıfı oluşturuldu. Oluşturulan bu set sınıfına add() metodu ile çeşitli değerler eklendi. Biz oluşturduğumuz Set sınıfına başka bir veri tipinde bir değer eklemek istediğimizde bizlere hata verecektir. Çünkü biz Set sınıfımızı Double türünde kısıtlamış olduk.
var my_Set = mutableSetOf
my_Set.add(“Sivas”)
my_Set.add(“Rize”)
my_Set.add(“Konya”)
my_Set.add(2,”İzmir”) // hata
var my_Set = mutableSetOf<String>() my_Set.add(“Sivas”) my_Set.add(“Rize”) my_Set.add(“Konya”)
my_Set.add(2,“İzmir”) // hata |
Başka bir örnekte ise String türünde bir Set sınıfı oluşturuldu ve içine elemanlar eklendi. Array List kullanımında olduğu gibi hangi indexs te olacak onu belirtip ve istenilen değer yazılmasına rağmen hata ile karşılaşıldı. Set sınıfında bu tip bir kullanım yok sadece eklenen değerler en sona eklenir. Veri yapılarında kullanılan Kuyruk yapısına benzemektedir.
Set sınıfından bir item almak
Set sınıfında bir item değerini alabilmek için elementAt() metodu kullanılır. Array liste kullanıldığı gibi get() metodu ile sınıfın itemlarına erişemiyoruz.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(58) // 0.indis
set_example.add(55) // 1.indis
set_example.add(34) // 2.indis
set_example.add(6) // 3.indis
var index2=set_example.elementAt(2) // 2.indisteki elemanı işaret eder.
var index0= set_example.elementAt(0) // 0.indisteki elemanı işaret eder.
// 0 ve 2. indisteki değerlerin println() metoduyla kullanımı
println(“2.indisteki değer : $index2”) // 34
println(“0.indisteki değer : $index0”) // 58
val set_example = mutableSetOf<Int>() // Int türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(58) // 0.indis set_example.add(55) // 1.indis set_example.add(34) // 2.indis set_example.add(6) // 3.indis
var index2=set_example.elementAt(2) // 2.indisteki elemanı işaret eder. var index0= set_example.elementAt(0) // 0.indisteki elemanı işaret eder.
// 0 ve 2. indisteki değerlerin println() metoduyla kullanımı println(“2.indisteki değer : $index2”) // 34 println(“0.indisteki değer : $index0”) // 58 |
Öğrenmiş olduğumuz bu bilgiyi pekiştirmek adına bir örnek yapalım. Örneğimize başlarken öncelikle int türünde bir set sınıfı oluşturuyoruz. Oluşturulan bu Set sınıfına add() metoduyla elemanlar ekliyoruz. Eklemiş olduğumuz elemanların indexslerini öğrenmek içinse elementAt() metodu kullandık. 2 adet index değerini öğrenmek istiyoruz. Onları daha okunur halde olması için var değişkeni kullanılarak yeni değişkenlere atanıyor. Atamış olduğumuz değerleri println() metodu yardımıyla ekranda gösteriyoruz.
Set sınıfından bir item silmek
Set sınıfından bir item silmek için remove() metodu kullanılır.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(58) // 0.indis
set_example.add(55) // 1.indis
set_example.add(34) // 2.indis
set_example.add(6) // 3.indis
set_example.remove(58) // silinecek elemanın değeri verilir.
for (i in set_example){ // set_example uzunluğu kadar elemanlar içinde dön
println(i) // elemanları teker teker yaz
}
val set_example = mutableSetOf<Int>() // Int türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(58) // 0.indis set_example.add(55) // 1.indis set_example.add(34) // 2.indis set_example.add(6) // 3.indis
set_example.remove(58) // silinecek elemanın değeri verilir.
for (i in set_example){ // set_example uzunluğu kadar elemanlar içinde dön println(i) // elemanları teker teker yaz } |
Daha önceden eklemeler ve düzenlemeler yapmış olduğumuz Set sınıfının 58 değerine sahip index’ini remove komutu ile birlikte sildik. Silmiş olduğumuz değeri ve diğer set değerlerini görebilmek için for döngüsü yardımıyla ekranda set değerleri tek tek yazdırıldı. Aşağıdaki çıktıyı incelerseniz 58 değerine sahip bir eleman göremeyeceksiniz.
Set sınıfının önemli method ve değişkenleri
size : Set sınıfının boyutunu öğrenmemiz için kullanılan bir değişkendir.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis
set_example.add(“Kotlin”) // 1.indis
set_example.add(“Halil”) // 2.indis
val size=set_example.size // oluşturulan set sınıfının boyutu
println(“Set sınıfının uzunluğu : $size”) // println() metodu ile değer ekrana bastırıldı.
val set_example = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis set_example.add(“Kotlin”) // 1.indis set_example.add(“Halil”) // 2.indis
val size=set_example.size // oluşturulan set sınıfının boyutu
println(“Set sınıfının uzunluğu : $size”) // println() metodu ile değer ekrana bastırıldı. |
Örnekte String türünde bir Set sınıfı oluşturup içine değerler atadık. Atanan değerlerin ne kadar uzunlukta olduğunu öğrenmek için size değişkenini kullandık. Son olarak println() metodu yardımıyla ekranda değer gösterildi.
contains() metodu
Set sınıfının içerisinde bir eleman var mı yok mu onu kontrol edebilmek için kullanılan bir metoddur.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis
set_example.add(“Kotlin”) // 1.indis
set_example.add(“Halil”) // 2.indis
// Set sınıfının içerisinde Taha var mı diye kontrol ediliyor
set_example.contains(“Taha”) // Taha olmadığı için false değeri dönüyor.
// Set sınıfının içerisinde Halil var mı diye kontrol ediliyor
set_example.contains(“Halil”) // Halil olduğu için true değeri dönüyor.
val set_example = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis set_example.add(“Kotlin”) // 1.indis set_example.add(“Halil”) // 2.indis
// Set sınıfının içerisinde Taha var mı diye kontrol ediliyor set_example.contains(“Taha”) // Taha olmadığı için false değeri dönüyor.
// Set sınıfının içerisinde Halil var mı diye kontrol ediliyor set_example.contains(“Halil”) // Halil olduğu için true değeri dönüyor. |
Set sınıfımızın içerisinde “Taha” değerine sahip bir eleman olmadığı için false değeri dönüyor. Sınıfımızda “Halil” değerine sahip bir eleman olduğu için true değeri döndürülüyor. Bu çok fazla elemana sahip bir Set sınıfında acaba ben şu değeri kullandım mı diye şüpheye düştüğünüzde bu şüphenin giderilmesi ve sonucun gözükmesi için kullanılan harika bir metoddur.
isEmpty() metodu
Set sınıfında eleman var mı yok mu diye kontrol etmeye yarayan bir metoddur. Set sınıfında eleman yoksa true değeri döner eğer elemana sahip ise false değeri döner.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis
set_example.add(“Kotlin”) // 1.indis
set_example.add(“Halil”) // 2.indis
println(set_example.isEmpty()) // boş olmadığı için false değeri döndü
val set_example2 = mutableSetOf
println(set_example2.isEmpty()) // boş olduğu için true değeri döndü.
val set_example = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis set_example.add(“Kotlin”) // 1.indis set_example.add(“Halil”) // 2.indis
println(set_example.isEmpty()) // boş olmadığı için false değeri döndü
val set_example2 = mutableSetOf<String>() // boş bir set sınıfı oluşturuldu.
println(set_example2.isEmpty()) // boş olduğu için true değeri döndü. |
Daha önceden kullanmış olduğumuz Set sınıfının içi dolu mu boş mu diye kontrol ettik. İçerisinde elemanlar bulunduğu için false değerini döndürdü. Birde true değerini görebilmek için boş bir Set sınıfı tanımlandı. Tanımlanan sınıfa değer eklenmeden bunun boş mu dolu mu olduğu kontrol edildi ve sonuç boş olduğu için true değerini döndürdü.
clear() metodu
Set sınıfın içinde bulunan değerlerin hepsini temizler. Boş bir dizi haline getirir.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis
set_example.add(“Kotlin”) // 1.indis
set_example.add(“Halil”) // 2.indis
set_example.clear() // Set sınıfının içini temizle.
println(set_example) // clear() metodu ile içi temizlenen Set sınıfı [] şekilde bir çıktı verir.
val set_example = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.indis set_example.add(“Kotlin”) // 1.indis set_example.add(“Halil”) // 2.indis
set_example.clear() // Set sınıfının içini temizle.
println(set_example) // clear() metodu ile içi temizlenen Set sınıfı [] şekilde bir çıktı verir. |
Örneğimizde 3 elemanlı bir Set sınıfını clear() metodu yardımıyla sıfırladık. println() metodu ile ekranda bu Set sınıfını gösterdik sonuç olarak bize boş bir array döndürdü.
indexOf() metodu
Set sınıfında aradığımız değerin kaçıncı indekste olduğunu öğrenmek için kullanılır. Aradığımız değer Set sınıfında yok ise -1 değeri döndürülür.
val set_example = mutableSetOf
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.index
set_example.add(“Kotlin”) // 1.index
set_example.add(“Halil”) // 2.index
set_example.indexOf(“Halil”) // Set sınıfındaki 3.index’i verir.
set_example.indexOf(“Taha”) // Set sınıfına ait değilse -1 değerini verir.
val set_example = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
// Tanımlanan bu Set sınıfına aşağıdaki elemanlar eklendi.
set_example.add(“Mobilhanem”) // 0.index set_example.add(“Kotlin”) // 1.index set_example.add(“Halil”) // 2.index
set_example.indexOf(“Halil”) // Set sınıfındaki 3.index’i verir.
set_example.indexOf(“Taha”) // Set sınıfına ait değilse -1 değerini verir. |
Set sınıfında “Halil” değeri arandı ve bulundu. İndex olarak 3 değerini verdi. “Taha” değeri Set sınıfına ait bir değer olmadığı için -1 değeri döndürüldü.
equals() metodu
İki ya da daha fazla Set sınıfının elemanlarının karşılaştırılmasında kullanılan bir metoddur.
val set_example2 = mutableSetOf
set_example2.add(“Mobilhanem”)
set_example2.add(“Kotlin”)
val set_example3 = mutableSetOf
set_example3.add(“Mobilhanem”)
set_example3.add(“Kotlin”)
println(set_example2.equals(set_example3)) // true değeri döndürür.
val set_example2 = mutableSetOf<String>() // String türünde bir Set sınıfı tanımlandı.
set_example2.add(“Mobilhanem”) set_example2.add(“Kotlin”)
val set_example3 = mutableSetOf<String>() // String türünde ikinci bir Set sınıfı tanımlandı.
set_example3.add(“Mobilhanem”) set_example3.add(“Kotlin”)
println(set_example2.equals(set_example3)) // true değeri döndürür. |
String türünde iki Set sınıfı oluşturuldu. Oluşturulan bu Set sınıflarına aynı değerler eklendi. equals() metodu ile bu elemanlar karşılaştırıldı. Elemanlar birbirine eşit olduğu için true değeri döndürdü.
Bu dersimde anlatmak istediklerim bu kadar. Bir sonraki dersimde Map Kullanımını ve methodlarını anlatacağım.
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.
44