distinctBy
是 Kotlin 中的一个函数,它允许你根据特定的键或属性对列表进行去重。它会保留第一次出现的元素,后续重复的元素将被过滤掉。
以下是使用 distinctBy
的一些例子:
示例 1: 根据对象的属性去重
假设你有一个包含对象的列表,你希望根据对象的某个属性进行去重:
Kotlin
data class Person(val name: String, val age: Int)
val people = listOf(
Person("Alice", 30),
Person("Bob", 25),
Person("Alice", 35),
Person("Charlie", 30)
)
val distinctPeopleByName = people.distinctBy { it.name }
println(distinctPeopleByName)
// 输出: [Person(name=Alice, age=30), Person(name=Bob, age=25), Person(name=Charlie, age=30)]
在这个例子中,distinctBy
根据 name
属性对列表进行去重。
示例 2: 根据计算出的键去重
你也可以根据一个计算出的键来去重:
Kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
val distinctByEvenOdd = numbers.distinctBy { it % 2 }
println(distinctByEvenOdd)
// 输出: [1, 2]
在这个例子中,distinctBy
根据数字是奇数还是偶数进行去重。
示例 3: 根据多个属性去重
如果你需要根据多个属性来去重,可以创建一个组合键:
Kotlin
data class Person(val name: String, val age: Int)
val people = listOf(
Person("Alice", 30),
Person("Alice", 30),
Person("Bob", 25),
Person("Alice", 35),
Person("Charlie", 30)
)
val distinctPeopleByNameAndAge = people.distinctBy { Pair(it.name, it.age) }
println(distinctPeopleByNameAndAge)
// 输出: [Person(name=Alice, age=30), Person(name=Bob, age=25), Person(name=Alice, age=35), Person(name=Charlie, age=30)]
在这个例子中,distinctBy
根据 name
和 age
的组合键进行去重。
通过使用 distinctBy
,你可以方便地根据任意属性或计算出的键来对列表进行去重操作。
---- 文章由 ChatGPT 生成