kotlin distinctBy 使用

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 根据 nameage 的组合键进行去重。

通过使用 distinctBy,你可以方便地根据任意属性或计算出的键来对列表进行去重操作。

---- 文章由 ChatGPT 生成

相关推荐
CC.GG5 分钟前
【C++】哈希表的实现
java·c++·散列表
玄同7658 分钟前
Python 数据类型:LLM 语料与 API 参数的底层处理逻辑
开发语言·人工智能·python·自然语言处理·llm·nlp·知识图谱
ZHANG13HAO9 分钟前
调用脚本实现 App 自动升级(无需无感、允许进程中断)
android
Slow菜鸟13 分钟前
Java基础 | 布隆过滤器
java·开发语言
比奇堡派星星19 分钟前
Linux Hotplug 机制详解
linux·开发语言·驱动开发
VcB之殇44 分钟前
popstate监听浏览器的前进后退事件
前端·javascript·vue.js
宁雨桥1 小时前
Vue组件初始化时序与异步资源加载的竞态问题实战解析
前端·javascript·vue.js
molaifeng1 小时前
像搭积木一样理解 Golang AST
开发语言·后端·golang
SystickInt1 小时前
C语言 UTC时间转化为北京时间
c语言·开发语言
圆号本昊1 小时前
【2025最新】Flutter 加载显示 Live2D 角色,实战与踩坑全链路分享
android·flutter