kotlin - 如何在 Kotlin 中将两个不同的类数据合并为一个
问题描述
我使用了两个不同的类:
列表标题.kt
class ListTitle {
var id: Int? = null
var title: String? = null
constructor(id:Int, title: String) {
this.id = id
this.title = title
}
}
ListDes.kt
class ListDes {
var address: Int? = null
var des: String? = null
constructor(address: Int, des: String) {
this.address = address
this.des = des
}
}
listOfTitle
并且listDes
是ArrayList
s:
listOfTitle.add(ListTitle(1, "Hello"))
listOfTitle.add(ListTitle(2, "World"))
listDes.add(ListDes(1, "World Des"))
listDes.add(ListDes(2, "Hello Des"))
我想通过/匹配它们title
来分配ListTitle
todes
ListDes
id
address
为两个列表的每个元素
我该如何处理?
解决方案
您可以使用zip将两个列表合并为一个具有Pairs
as 元素的列表。
val listOfTitle = listOf(ListTitle(1, "Hello"), ListTitle(2, "World"))
val listDes = listOf(ListDes(1, "World Des"), ListDes(2, "Hello Des"))
val pairList = listOfTitle.zip(listDes)
// since an element in the new list is a pair, we can use destructuring declaration
pairList.forEach { (title, des) ->
println("${title.title} ${des.des}")
}
输出:
你好世界 Des
世界你好 Des
几点注意事项:
您可以在 Kotlin 中以较短的形式编写您的课程。只需将属性直接放在主构造函数的参数列表中,如下所示。
class ListTitle(
var id: Int? = null,
var title: String? = null
)
class ListDes(
var address: Int? = null,
var des: String? = null
)
不要过度使用可空性(例如使用
Int?
而不是Int
)。仅在必要时使属性为空。如果您始终为指定属性传递参数,则不需要它们可以为空。也许您应该为类选择其他名称(其中不包含“List”),因为它们实际上是
List
示例中 a 的元素,而不是它们本身。
推荐阅读
- angular - 如何在 Angular/SpringBoot 应用程序中设置标题 X-Content-Type-Options “nosniff”?
- python - matlab 中的 3D 曲面图,来自 3 个不同长度的坐标向量(用于网格定义)和用于电场定义的数据矩阵(复数)
- android - 没有图像的Android自动滚动视图
- php - 使用设定的时间间隔遍历 php 数组
- python - 如何在 Python 中读取字节对象
- java-8 - 将map中的数组列表与java中的重复键合并
- php - 前导 0 的月份从 createfromformat 得到错误结果
- r - 有没有一种快速的方法来提取与今天日期相对应的几年内的数据
- javascript - TypeError:无法读取 javascript 中检查的 null 错误的属性“已检查”
- bash - 使用 awk 通过几列与文件相交