Useful List Methods

forEachIndexed
//forEachIndexed, forEach ile aynı işi yapıyor. Sadece index değerini de alıyor.
//forEachIndexed does the same thing as forEach. It just takes the index value.

val list = listOf("a", "b", "c")

list.forEachIndexed { index, s ->
    println("foreachindexed -> $index: $s")
}
filter
//filter, bir listeyi filtrelemek için kullanılıyor.
//filter is used to filter a list.

val list = listOf("a", "a", "c")

val result = list.filter { it == "a" }

println("filter -> $result")
find
//find, bir listeyi filtrelemek için kullanılıyor. Sadece ilk elemanı döndürüyor.
//find is used to filter a list. It only returns the first element.

val list = listOf("a", "ab", "c")

val result = list.find { it.contains("a") }

println("find -> $result")
findLast
//findLast, find ile aynı işi yapıyor. Sadece son elemanı döndürüyor.
//findLast does the same thing as find. It only returns the last element.

val list = listOf("a", "ab", "c")

val result = list.findLast { it.contains("a") }

println("findLast -> $result")
first
//first, bir listenin ilk elemanını döndürüyor.
//first returns the first element of a list.

val list = listOf("a", "b", "c")

val result = list.first()

println("first -> $result")
last
//last, bir listenin son elemanını döndürüyor.
//last returns the last element of a list.

val list = listOf("a", "c", "c")

val result = list.last()

println("last -> $result")

getOrNull
//getOrNull, bir listenin elemanını döndürüyor. Eğer eleman yoksa null döndürüyor.
//getOrNull returns an element of a list. If there is no element, it returns null.

val list = listOf("a", "b", "c")

val result = list.getOrNull(3)

println("getOrNull -> $result")
groupBy
//groupBy, bir listeyi gruplamak için kullanılıyor.
//groupBy is used to group a list.

val list = listOf("a", "a", "c")

val result = list.groupBy { it == "a" }
val resultValues = list.groupBy { it == "a" }.values

println("groupBy -> $result")
println("groupBy values -> $resultValues")
none
//none, bir listenin elemanlarını kontrol etmek için kullanılıyor. Eğer eleman yoksa true döndürüyor.
//none is used to check the elements of a list. If there is no element, it returns true.

val list = listOf("a", "a", "c")

val result = list.none { it == "a" }

println("none -> $result")
map
//map, bir listenin elemanlarını değiştirmek için kullanılıyor.
//map is used to change the elements of a list.

data class User(val name: String?, val age: Int?)
data class UserUI(val name: String, val age: Int)

val users = listOf(
    User("Yağmur", 25),
    User("Elif", 23),
    User("Mehmet", 30),
    User("Ayşe", 20),
    User("Ali", 35),
    User("Caner", 27),
)

val result = users.map {
    UserUI(
        it.name.orEmpty(),
        it.age ?: 0
    )
}

val resultMapByAge = result.map { it.age }
val resultMapByName = result.map { it.name }

println("map -> $result")
println("map by age -> $resultMapByAge")
println("map by name -> $resultMapByName")
reversed
//bir listeyi ters çevirmek için kullanılıyor
//reversed is used to reverse a list

val list = listOf("a", "b", "c")

val result = list.reversed()

println("reversed -> $result")
shuffled
//bir listeyi karıştırmak için kullanılıyor
//shuffled is used to shuffle a list

val list = listOf("a", "b", "c")

val result = list.shuffled()

println("shuffled -> $result")
sortedBy
//bir listeyi sıralamak için kullanılıyor
//sortedBy is used to sort a list

data class UserUI(val name: String, val age: Int)

val users = listOf(
    UserUI("Yağmur", 25),
    UserUI("Elif", 23),
    UserUI("Mehmet", 30),
    UserUI("Ayşe", 20),
    UserUI("Ali", 35),
    UserUI("Caner", 27),
)

val result = users.sortedBy { it.age }
val resultByDescending = users.sortedByDescending { it.age }

println("sortedBy -> $result")
println("sortedByDescending -> $resultByDescending")
sumOf
//bir listenin elemanlarının toplamını almak için kullanılıyor
//sumOf is used to get the sum of the elements of a list

val list = listOf(1, 2, 3)

val result = list.sumOf { it }

println("sumOf -> $result")
maxOf & maxBy
//maxOf ve maxBy birbirine çok benziyor. maxOf bir değer döndürürken, maxBy bir nesne döndürüyor.
//maxOf and maxBy are very similar to each other. maxOf returns a value, while maxBy returns an object.

data class UserUI(val name: String, val age: Int)

val users = listOf(
    UserUI("Yağmur", 25),
    UserUI("Elif", 23),
    UserUI("Mehmet", 30),
    UserUI("Ayşe", 20),
    UserUI("Ali", 35),
    UserUI("Caner", 27),
)

val resultMaxOf = users.maxOf { it.age }
val resultMaxBy = users.maxBy { it.age }

println("maxOf -> $resultMaxOf")
println("maxBy -> $resultMaxBy")
maxOf & maxBy
//minOf ve minBy birbirine çok benziyor. minOf bir değer döndürürken, minBy bir nesne döndürüyor.
//minOf and minBy are very similar to each other. minOf returns a value, while minBy returns an object.

data class UserUI(val name: String, val age: Int)

val users = listOf(
    UserUI("Yağmur", 25),
    UserUI("Elif", 23),
    UserUI("Mehmet", 30),
    UserUI("Ayşe", 20),
    UserUI("Ali", 35),
    UserUI("Caner", 27),
)

val resultMinOf = users.minOf { it.age }
val resultMinBy = users.minBy { it.age }

println("minOf -> $resultMinOf")
println("minBy -> $resultMinBy")