Android Studio中如何将等长双列表按索引合并为键值对列表
解决方案
你需要用zip操作符来实现这个需求,它专门用于将两个集合按索引一一配对,完全匹配你的场景,不需要使用filter或flatMap(这两个分别用于过滤和扁平化集合,不适合当前需求)。
代码实现
首先解构你的Pair对象,将float数组转为List后,用zip配对再转成你需要的列表格式:
val (stringList, floatArray) = distanceResults // 生成包含 [String, Float] 列表的最终集合 val finalList = stringList.zip(floatArray.toList()) { str, floatVal -> listOf(str, floatVal) }
或者更简洁的写法:
val finalList = distanceResults.first.zip(distanceResults.second.toList()) .map { (str, floatVal) -> listOf(str, floatVal) }
补充说明
- 如果你的需求只是保留配对关系,不需要转成
List<List<Any>>,可以直接用zip得到List<Pair<String, Float>>,省去后续的map步骤:val pairedList = distanceResults.first.zip(distanceResults.second.toList()) - 因为
floatArray是数组类型,需要调用toList()转为List才能和MutableList<String>进行zip操作,Kotlin的zip操作符要求两个操作数都是Iterable类型。
内容的提问来源于stack exchange,提问作者Tyler Norman
相关产品推荐
相关产品推荐

