我有一个类 Person:
class Person(var fullName: String, var nickname: String, var age: Int)
在我的代码中,有时我有一个 Person 对象列表和一个昵称列表。
var people: List<Person> = listOf(
Person("Adam Asshat", "dontinviteme", 21),
Person("Bob Bowyer", "bob", 37),
Person("Emily Eden", "emily", 22)
)
var invitedToParty: List<String> = listOf("bob", "emily")
现在我想通过使用 lambda 获得一个只有 Bob 和 Emily 的列表,但我不确定在 Kotlin 中如何实现。
var invitedPeople: List<Person> = // a lambda that results in a list containing only Bob and Emily's objects
在 C# 中,我可能会使用 LINQ 和 .where() 方法结合 == any(),但从我发现的情况来看,Kotlin 似乎没有类似的东西。
这在 Kotlin lambda 中甚至可能吗?
最佳答案
在 C# 中你会这样做:
people.Where(p => invitedToParty.Any(s => s == p.nickname));
与在 Kotlin 中一样,您将使用 filter
,它就像 Where
和 any
一样:
people.filter { p -> invitedToParty.any { it == p.nickname } }
或使用包含
:
people.filter { invitedToParty.contains(it.nickname) }
关于android - Kotlin - 通过与属性列表进行比较来过滤对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952047/