将 Kotlin 中的两个列表与索引结合起来
Combining Two List in Kotlin with Index
有一个数据class是水果
data class Fruits(
val code: String, //Unique
val name: String
)
带有布尔变量的基本列表索引项如下。
val indexList: MutableList<Boolean> = MutableList(baseFruitList.size) { false }
现在最喜欢的索引列表如下
val favList: MutableList<Boolean> = MutableList(favFruitList.size) { true}
我想要一个综合的完整列表,其中最喜欢的项目基本上显示为 true。
Ex:
baseFruitList = {[FT1,apple],[FT2,grapes],[FT3,banana],[FT4,mango],[FT5,pears]}
favList = {[FT2,grapes],[FT4,mango]}
最终的索引列表应该有
finalIndexed = {false,true,false,true,false}
我们如何在 Kotlin 中实现而不遍历每个元素。
你可以做到
val finalIndexed = baseFruitList.map { it in favList }
假设,就像@Tenfour04 所要求的那样,name
保证是特定 code
的特定值(包括匹配大小写)(因为该组合是数据 class 匹配另一个,例如检查它是否在另一个列表中)
如果你不能保证,这个更安全:
val finalIndexed = baseFruitList.map { fruit ->
favList.any { fav.code == fruit.code }
}
但在这里您必须遍历所有收藏(至少在找到匹配之前)以查看是否有代码。
但实际上,如果 code
是此处的唯一标识符,为什么不将它们存储在您的 favList
中?
favList = listOf("FT2", "FT4") // or a Set would be more efficient, and more correct!
val finalIndexed = baseFruitList.map { it.code in favList }
我不知道你所说的“不遍历每个元素”是什么意思 - 如果你的意思是没有明确的索引 for 循环,那么你可以像我在这里一样使用这些简单的函数。但总会涉及一些迭代。集合始终是帮助您最大程度减少这种情况的一种选择
有一个数据class是水果
data class Fruits(
val code: String, //Unique
val name: String
)
带有布尔变量的基本列表索引项如下。
val indexList: MutableList<Boolean> = MutableList(baseFruitList.size) { false }
现在最喜欢的索引列表如下
val favList: MutableList<Boolean> = MutableList(favFruitList.size) { true}
我想要一个综合的完整列表,其中最喜欢的项目基本上显示为 true。
Ex:
baseFruitList = {[FT1,apple],[FT2,grapes],[FT3,banana],[FT4,mango],[FT5,pears]}
favList = {[FT2,grapes],[FT4,mango]}
最终的索引列表应该有
finalIndexed = {false,true,false,true,false}
我们如何在 Kotlin 中实现而不遍历每个元素。
你可以做到
val finalIndexed = baseFruitList.map { it in favList }
假设,就像@Tenfour04 所要求的那样,name
保证是特定 code
的特定值(包括匹配大小写)(因为该组合是数据 class 匹配另一个,例如检查它是否在另一个列表中)
如果你不能保证,这个更安全:
val finalIndexed = baseFruitList.map { fruit ->
favList.any { fav.code == fruit.code }
}
但在这里您必须遍历所有收藏(至少在找到匹配之前)以查看是否有代码。
但实际上,如果 code
是此处的唯一标识符,为什么不将它们存储在您的 favList
中?
favList = listOf("FT2", "FT4") // or a Set would be more efficient, and more correct!
val finalIndexed = baseFruitList.map { it.code in favList }
我不知道你所说的“不遍历每个元素”是什么意思 - 如果你的意思是没有明确的索引 for 循环,那么你可以像我在这里一样使用这些简单的函数。但总会涉及一些迭代。集合始终是帮助您最大程度减少这种情况的一种选择