android - Kotlin - 通过与属性列表进行比较来过滤对象列表

标签 android list lambda kotlin

我有一个类 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,它就像 Whereany 一样:

people.filter { p -> invitedToParty.any { it == p.nickname } }

或使用包含:

people.filter { invitedToParty.contains(it.nickname) }

关于android - Kotlin - 通过与属性列表进行比较来过滤对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952047/

相关文章:

java - Android 上的最佳方式或类似的 lambda 表达式或 linq(eclipse)

android - 适用于不同屏幕尺寸的Android Apk Split

java - 不兼容类型 : a protoClass cannot be converted to MessageOrBuilder

java - 我应该关心 Lollipop 及以后的主线程和 UI 线程之间的区别吗?

C++ std::指向结构的指针列表

list - 在dart中,最好使用List.generate或List.of或List.from

haskell - 如何定义基于总和类型的子类型过滤列表的 lambda 函数?

java - 如何从弹出窗口中检索 EditText 值?

string - 如何在 Haskell 中检查字符串的每个字符

c++ - C++11 是否允许在 lambda 内部和 lambda 内部进行以下嵌套可变参数扩展?