【问题标题】:Convert two string list to List of Object use first list index to get the value from Second list将两个字符串列表转换为对象列表使用第一个列表索引从第二个列表中获取值
【发布时间】:2021-10-01 15:01:02
【问题描述】:

我对使用 map 从两个字符串列表中获取对象列表感到有些困惑。

我们举个例子: 清单 1:

var name = arrayListOf("name1","name2","name3")

清单 2:

var lastName = arrayListOf("lastName1","lastName2","lastName3")

Names的数据类如下

data class Names(
var name: String, 
var lastName: String
)

现在我想要列表,它是名称和姓氏的组合,我们使用名称索引来获取姓氏。

作为输出的名称列表如下:

[Names(name=name1, lastName=lastName1), Names(name=name2, lastName=lastName2), Names(name=name3, lastName=lastName3)]

请求使用 rx kotlin 函数。通过使用集合很容易解决。

【问题讨论】:

  • 您的最后几句话听起来像是在询问如何仅使用 Rx 来做到这一点,因为使用标准库太容易了。是这样吗,你想以艰难的方式做到这一点?使用标准库,它将是 val result = name.zip(lastName, ::Names)

标签: kotlin rx-java reactive-programming


【解决方案1】:

这是zip 操作:

var name = arrayListOf("name1","name2","name3")
var lastName = arrayListOf("lastName1","lastName2","lastName3")
data class Names(
var name: String, 
var lastName: String
)
fun main() {
    println(name.zip(lastName) {n, f -> Names(n, f)} )
}

输出

[Names(name=name1, lastName=lastName1), Names(name=name2, lastName=lastName2), Names(name=name3, lastName=lastName3)]

(我认为您不需要“反应式”编程来做到这一点)

按照@Tenfour04 在 cmets 中的建议,使用constructor reference 有一种更短的方法。

name.zip(lastName, ::Names)

【讨论】:

  • 更短/更清洁:name.zip(lastName, ::Names)
  • 我不知道。我已将其添加到答案正文中,非常感谢。
猜你喜欢
  • 2020-04-08
  • 1970-01-01
  • 2015-01-18
  • 2022-10-03
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
相关资源
最近更新 更多