Kotlin中如何校验两个对象列表中元素的指定字段是否存在相等值
Kotlin 两个用户组ID交集校验实现方案
你已知的any高阶函数可以直接复用,对应你需求的实现有两种常用写法:
基础嵌套写法(适合短列表场景)
直接嵌套两层any逻辑即可完成判断,代码简洁直观:
user.groups.any { userGroup -> otheruser.groups.any { otherGroup -> userGroup.id == otherGroup.id } }
只要两个用户的组列表存在任意一个相同ID的分组,该表达式就返回true,无交集则返回false。
优化写法(适合长列表场景)
如果两个用户的组列表数据量较大,嵌套循环的O(n*m)复杂度会有性能损耗,推荐先把其中一个列表的ID提取为Set再校验,时间复杂度可降至O(n+m):
// 先提取另一个用户的所有分组ID存入Set,后续查询复杂度为O(1) val otherGroupIds = otheruser.groups.map { it.id }.toSet() // 校验当前用户的分组ID是否存在于上述Set中 val hasCommonGroup = user.groups.any { it.id in otherGroupIds }
内容的提问来源于stack exchange,提问作者Abhishek AN
相关产品推荐
相关产品推荐

