Diziler ve Koleksiyonlar
Her birinin üstün olduğu durumlar
Diziler ve Koleksiyonlar, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Diziler ve Koleksiyonlar
Diziler ve koleksiyonlar aynı işlevsel işlemleri sunar, ancak bunları farklı şekilde değerlendirir. Hangisinin ne zaman avantajlı olduğunu bilmek, verimli ve okunaklı kod yazmanıza yardımcı olur.
İstekli Koleksiyonları Hatırlama
Koleksiyonlar isteklidir: her işlem tüm öğeleri işler ve hemen yeni bir koleksiyon üretir. Bu yaklaşım küçük veriler için basit ve hızlıdır.
fun main() {
val result = listOf(1, 2, 3).map { it + 1 }.filter { it > 2 }
println(result)
}Tembel Dizileri Hatırlama
Diziler tembeldir: işlemler, tüketilene kadar çalıştırılmadan bir işlem hattı oluşturur ve tüketildiğinde öğe öğe yürütülür. Böylece ara koleksiyonlar oluşturulmaz.
fun main() {
val result = listOf(1, 2, 3).asSequence().map { it + 1 }.filter { it > 2 }.toList()
println(result)
}Koleksiyonların Avantajlı Olduğu Durumlar
Küçük koleksiyonlarda ve kısa zincirlerde koleksiyonlar genellikle daha hızlı ve daha anlaşılırdır. Diziler her öğe için ek yük (yineleyici çağrıları) oluşturur; bu yük, çok küçük verilerde sağladıkları yararı aşabilir.
Dizilerin Avantajlı Olduğu Durumlar
Veri büyük olduğunda, zincir uzun olduğunda veya sonucun yalnızca bir bölümüne (ilk eşleşme ya da ilk N öğe) ihtiyaç duyduğunuzda diziler avantajlıdır. Büyük ara listeler oluşturmaz ve erken dururlar.
fun main() {
val firstEvenSquare = (1..1000000).asSequence()
.map { it * it }
.first { it % 2 == 0 }
println(firstEvenSquare)
}Farkı Ölçme
Büyük bir aralık kullanan bu örnek, istekli sürümün oluşturacağı milyon öğelik ara listenin bir dizi tarafından nasıl önlendiğini gösterir.
fun main() {
val seqResult = (1..1000).asSequence()
.filter { it % 2 == 0 }
.map { it * 3 }
.take(3)
.toList()
println(seqResult)
}Bellek Kullanımı
İstekli zincirler her ara listeyi aynı anda bellekte tutar. Diziler ise yalnızca o anda işlem hattından geçen öğeyi tutar; bu nedenle uzun işlem hatlarında en yüksek bellek kullanımı düşük kalır.
Erken Sonlandırma Avantajı
Bir sonlandırma işlemi erken tamamlanabiliyorsa (first, find, any), diziler kalan öğeleri atlar. İstekli koleksiyonlar ise bu noktaya gelmeden önce her şeyi işlemiş olur.
fun main() {
val found = (1..100).asSequence()
.map { println("checking $it"); it }
.any { it == 3 }
println("Found: $found")
}Durum Bilgili İşlemlere Dikkat
sorted, distinct ve groupBy gibi işlemler tüm öğelere ihtiyaç duyar; bu nedenle tembellikten sağlanan yararı azaltırlar. Bu işlemlerin baskın olduğu bir işlem hattı, dizi kullanmaktan yarar sağlamayabilir.
Uygulamaya Yönelik Bir Kural
Genel kural olarak, açıklık için varsayılan olarak koleksiyonları kullanın. Büyük verileri işlerken, birçok işlemi zincirlerken veya sonucun yalnızca küçük bir bölümüne ihtiyaç duyarken diziye geçin. Başarım kritikse her zaman ölçüm yapın.
Aynı API, Farklı Motor
Her ikisi de aynı işlem adlarını paylaştığı için genellikle asSequence() ekleyip sonlandırma olarak toList() kullanarak ya da bunları kaldırarak geçiş yapabilirsiniz. Bu, başarımı düşük riskle denemenizi sağlar.
fun main() {
val data = listOf(1, 2, 3, 4, 5)
val asList = data.map { it * 2 }.filter { it > 4 }
val asSeq = data.asSequence().map { it * 2 }.filter { it > 4 }.toList()
println(asList == asSeq)
}Kısa Kontrol
Bir dizinin koleksiyondan daha iyi başarım gösterme olasılığı en yüksek olan durum hangisidir?
Özet
Koleksiyonlar isteklidir; küçük veriler ve açıklık için uygundur. Diziler ise ara listeler oluşturmamaları ve erken sonlandırma yapmaları sayesinde büyük veriler, uzun zincirler veya kısmi sonuçlar için daha uygundur. Durum bilgili işlemlere dikkat edin. Aynı API'yi paylaştıkları için geçiş yapmak kolaydır. Böylece Diziler kursu tamamlanır.
Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“Diziler ve Koleksiyonlar” dersi ücretsiz mi?
Evet — “Diziler ve Koleksiyonlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“Diziler ve Koleksiyonlar” dersinde ne öğreneceğim?
Her birinin üstün olduğu durumlar Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Diziler ve Koleksiyonlar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Diziler Neden Kullanılır
- Diziler Oluşturma
- Tembel İşlemler
- Diziler ve Koleksiyonlar