kotlin - 如何将谓词应用于一个数组并使用结果从 Kotlin 中的另一个数组中获取值
问题描述
我有 2 个数组(它们实际上是二维的,但我认为这对这个问题并不重要)
val arr1 = arrayOf<Char>('a', 'b', 'c', 'd', 'e', 'b')
val arr2 = arrayOf<Char>('z', 'y', 'x', 'w', 'v', 'u')
我正在尝试实现以下方法
fun filter(predicate: (T?) -> Boolean): Collection<Char> { ... }
上面的数组被简化为真实代码中 arr1 的内容是一个可为空的泛型(T?),但我猜我们可以继续这样的问题。
所以我想要做的是将谓词应用于第一个数组并从第二个数组的相应索引中获取值。
所以可以说我尝试
val res = obj.filter { it == 'b' }
我想要一个包含“y”和“u”的集合。
我一直在绕着房子走,所以我想我错过了正确的方法。我的最后一次尝试是(使用扁平化,因为它是一个二维数组)
val newList = arr1.flatten().mapIndexed{idx, it -> predicate}
然后我可以使用它从 arr2 获取值(假设它们总是一致地变平?)
我想我的问题是
a)如何使用带有谓词的mapIndexed获取索引列表或b)更好的方法是什么(我假设我采取了错误的方法)
解决方案
val result = (arr1 zip arr2)
.filter { (c1, _) -> predicate(c1) }
.map { (_, c2) -> c2 }
推荐阅读
- java - Error trying to connect Hibernate to Postgres
- c - 进程间通信与c中的数据发送
- amazon-web-services - 比较 aws [Athena,S3, Lambda ...] VS Hortonwork [HDFS, Hive, Oozie ...]
- ios - 如何使用不同的帐户验证 ios 应用内购买?
- django - 如何在 django 模板中通过模型名获取模型
- python - 在 Python 中更改用户的当前目录
- python - 如何为保存的模型运行预测(使用图像作为输入)?
- excel - 如何设置 Power Query 的最大运行时间/超时?
- javascript - 如何删除自动对焦属性
- aws-cdk - 使用 AWS CDK 获取 VPC 的 CIDR 的最佳方法是什么?