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

Abh*_* AN 1 arrays list kotlin

基本上就是标题。

如果我必须找到我所知道的单一领域

a.any {
    it.name == "user"
}
Run Code Online (Sandbox Code Playgroud)

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

我想检查一下

如果 user.groups.anyItemInThisList.UNIQUEID == otheruser.groups.anyItemInThisList.UNIQUEID

我的数据看起来像这样

{
   "groups":[
      {
         "id":4
         "group":"Test Group",
         "role":"creator",
         "member_count":1,
         "userType":"local"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

Ten*_*r04 5

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

要使用简单的代码但O(n^2)时间完成此操作,您可以使用它。a它迭代其迭代的每个项目中的所有项目b,以查看是否存在任何匹配项。

val result = a.any { x1 -> b.any { x2 -> x1.id == x2.id} }
Run Code Online (Sandbox Code Playgroud)

要在O(n)内完成,您可以使用 Set 来完成。这会根据第一个列表创建一组名称,然后只需迭代第二个列表一次即可查看是否有任何名称在第一个集合中。

val aIds = a.mapTo(HashSet(a.size)) { it.id }
val result = b.any { it.id in aIds }
Run Code Online (Sandbox Code Playgroud)