Kotlin:如何检查对象列表中的字段是否等于另一个对象列表中的字段



基本就是标题。

如果我必须找到我所知道的单个字段,

a.any {
it.name == "user"
}

现在我有一个listOf(Groups)它包含一个唯一的ID

我想检查

if user.groups.anyItemInThisList.UNIQUEID == otheruser.groups.anyItemInThisList.UNIQUEID

我的数据是这样的

{
"groups":[
{
"id":4
"group":"Test Group",
"role":"creator",
"member_count":1,
"userType":"local"
}
]
}

重新表述您的问题(确保我正确理解),您有两个相同类型的项目列表,并且您想确定是否有出现在两个列表中的项目的id属性的任何值。

要用简单的代码完成,但是O(n^2)时间,您可以使用这个。它迭代a中的所有项,并对每个项迭代b以查看是否有匹配项。

val result = a.any { x1 -> b.any { x2 -> x1.id == x2.id} }

要在O(n)中做,你可以用集合来做。这将创建第一个列表中的名称的集合,然后只需迭代第二个列表一次,即可查看是否有名称在第一个集合中。

val aIds = a.mapTo(HashSet(a.size)) { it.id }
val result = b.any { it.id in aIds }

最新更新