面试题答案
一键面试data class User(val name: String, val age: Int)
fun main() {
val userList = mutableListOf(
User("Alice", 25),
User("Bob", 20),
User("Charlie", 25),
User("David", 22)
)
val sortedList = userList.sortedWith(compareBy(User::age, User::name))
val result = sortedList.groupBy { it.age }
result.forEach { (age, users) ->
println("Age: $age, Users: $users")
}
}
在分组操作中,groupBy
函数的工作原理如下:
groupBy
函数接受一个Lambda表达式作为参数,该表达式定义了分组的依据。在上述代码中,{ it.age }
表示按照User
对象的age
属性进行分组。groupBy
函数遍历列表中的每个元素,并将每个元素传递给Lambda表达式。Lambda表达式返回一个值,这个值将作为分组的键。- 对于每个键,
groupBy
函数会创建一个新的列表,并将所有键值相同的元素添加到这个列表中。 - 最终,
groupBy
函数返回一个Map
,其中键是分组的依据(如age
),值是包含所有具有相同键值的元素的列表。