Gruplama ve Sıralama
groupBy ve sortBy
Gruplama ve Sıralama, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming 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, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.
Verileri düzenleme
Gerçek dünya verilerinin çoğu bir özelliğe göre gruplanmalı veya bir anahtara göre sıralanmalıdır. Scala koleksiyonları bunu bildirimsel olarak yapmak için groupBy, sortBy, sortWith ve benzerlerini sunar.
object Main {
def main(args: Array[String]): Unit = {
val nums = List(5, 3, 8, 1, 9, 2)
println(nums.sorted)
}
}sorted: doğal sıralama
sorted, öğeleri doğal sıralarına göre sıralar (sayılar için artan, dizeler için alfabetik sıra). Yaygın türler için mevcut olan bir sıralama düzenine ihtiyaç duyar.
object Main {
def main(args: Array[String]): Unit = {
println(List(3, 1, 2).sorted)
println(List("pear", "apple", "fig").sorted)
}
}sortBy: anahtara göre sıralama
sortBy, her öğeden türetilen bir değere göre sıralama yapar. Sıralama anahtarını çıkaran bir işlev sağlayın.
object Main {
def main(args: Array[String]): Unit = {
val words = List("banana", "fig", "apple")
val byLength = words.sortBy(_.length)
println(byLength)
}
}Azalan sırada sıralama
Azalan sıralama yapmak için sayısal bir anahtarı olumsuzlayın veya sorted(Ordering.Int.reverse) kullanın. Türetilmiş anahtarlarda eksi işaretiyle sortBy kullanmak kısadır.
object Main {
def main(args: Array[String]): Unit = {
val nums = List(5, 3, 8, 1)
println(nums.sortBy(-_))
println(nums.sorted(Ordering.Int.reverse))
}
}sortWith: özel karşılaştırıcı
sortWith, ilk bağımsız değişkenin ikinciden önce gelmesi gerektiğinde true döndüren bir işlev alır; böylece sıralama üzerinde tam denetim sağlarsınız.
object Main {
def main(args: Array[String]): Unit = {
val nums = List(5, 3, 8, 1)
val descending = nums.sortWith((a, b) => a > b)
println(descending)
}
}Birden çok anahtara göre sıralama
sortBy, aynı anda birkaç anahtara göre sıralama yapmak için bir demet döndürebilir: önce ilk öğeyi karşılaştırır, eşitlik durumunu gidermek için ardından ikinci öğeyi karşılaştırır.
object Main {
def main(args: Array[String]): Unit = {
val people = List(("Ann", 30), ("Bob", 25), ("Ann", 22))
val sorted = people.sortBy { case (name, age) => (name, age) }
println(sorted)
}
}groupBy: bir Map'e bölümlendirme
groupBy, her anahtarın işlevinizin sonucu, her değerin ise bu anahtarı paylaşan öğeler listesi olduğu bir Map döndürür.
object Main {
def main(args: Array[String]): Unit = {
val nums = List(1, 2, 3, 4, 5, 6)
val byParity = nums.groupBy(_ % 2 == 0)
println(byParity)
}
}Hesaplanan anahtara göre gruplama
Gruplama anahtarı herhangi bir şey olabilir: ilk harf, uzunluk veya kategori. Her farklı anahtar bir kovaya dönüşür.
object Main {
def main(args: Array[String]): Unit = {
val words = List("apple", "avocado", "banana", "cherry", "cranberry")
val byFirstLetter = words.groupBy(_.head)
byFirstLetter.foreach { case (letter, ws) => println(s"$letter -> $ws") }
}
}Grupları dönüştürme
Gruplamadan sonra genellikle her kovayı özetlemek istersiniz. Değerleri dönüştürmek için view.mapValues (veya map) kullanın; örneğin her gruptaki öğeleri sayabilirsiniz.
object Main {
def main(args: Array[String]): Unit = {
val words = List("cat", "car", "dog", "deer", "cow")
val counts = words.groupBy(_.head).view.mapValues(_.size).toMap
println(counts)
}
}groupMapReduce tek adımda
groupMapReduce, tüm bunları tek geçişte yaparak gruplar, her öğeyi eşler ve her grubun değerlerini indirger. Kategori başına toplam gibi özetler oluşturmanın kısa bir yoludur.
object Main {
def main(args: Array[String]): Unit = {
val sales = List(("books", 10), ("toys", 5), ("books", 7), ("toys", 3))
val totals = sales.groupMapReduce(_._1)(_._2)(_ + _)
println(totals)
}
}Gruplama ve sıralamayı birleştirme
Sık kullanılan bir kalıp şudur: verileri gruplayın, her grubu özetleyin, ardından özeti sıralayın. Burada ilk harfe göre kelimeleri sayıyor ve sayıya göre sıralıyoruz.
object Main {
def main(args: Array[String]): Unit = {
val words = List("apple", "avocado", "banana", "cherry", "cranberry", "apricot")
val ranked = words
.groupBy(_.head)
.view.mapValues(_.size).toList
.sortBy(-_._2)
println(ranked)
}
}Kısa Kontrol
List(1,2,3,4).groupBy(_ % 2 == 0) ne döndürür?
Özet
Gruplama ve sıralamayı öğrendiniz:
sorted— doğal sırasortBy— türetilmiş anahtara göre sıralama (birden çok anahtar için demet)sortWith— özel karşılaştırıcıgroupBy— kovaların bulunduğu birMap'e bölümlendirmegroupMapReduce— tek geçişte gruplama, eşleme ve indirgeme
Sıkça Sorulan Sorular
“Gruplama ve Sıralama” dersi ücretsiz mi?
Evet — “Gruplama ve Sıralama” 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 Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.
“Gruplama ve Sıralama” dersinde ne öğreneceğim?
groupBy ve sortBy Scala for Backend Engineering & Functional Programming 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.
Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, 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.
“Gruplama ve Sıralama” 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 Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Scala for Backend Engineering & Functional Programming 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
- List, Vector, Set, Map
- Dönüşümler
- Katlama ve İndirgeme
- Gruplama ve Sıralama