如何在Kotlin通过ID合并两个数组?



我有两个数组:

val array1 = arrayOf(
arrayOf("001", "Product name", "Product group"),
arrayOf("002", "Product name", "Product group"),
arrayOf("003", "Product name", "Product group"),
arrayOf("004", "Product name", "Product group"),
arrayOf("005", "Product name", "Product group")
)
val array2 = arrayOf(
arrayOf("001", "Property1"),
arrayOf("002", "Property2"),
arrayOf("004", "Property4")
)

如何通过使用ID(第一列)将两个数组合并为一个?结果表(数组或可变列表)应该包含array1中的所有列,并且只匹配array2中第二列的结果。它应该看起来像下面的结构:

val array3 = arrayOf(
arrayOf("001", "Product name", "Product group", "Property1"),
arrayOf("002", "Product name", "Product group", "Property2"),
arrayOf("003", "Product name", "Product group", "NO MATCH"),
arrayOf("004", "Product name", "Product group", "Property4"),
arrayOf("005", "Product name", "Product group", "NO MATCH")
)

首先,我们需要为第二个列表创建一个查找映射,这样我们就可以通过ID轻松地搜索属性。然后我们可以在转换第一个列表时使用它:

val prop2ById = array2.associate { it[0] to it[1] }
val array3 = array1.map { it + arrayOf(prop2ById.getOrDefault(it[0], "NO MATCH")) }

我假设第二个数组中的ID是唯一的。

而且,你似乎把对象表示为数组。如果每一列都是有意义的,它意味着一个非常特定的数据块,我们不应该将其表示为数组,而应该表示为对象或可选的映射。在这里使用数组更容易出错,而且通常对代码质量不利。

相关内容

  • 没有找到相关文章

最新更新