Java 将类对象列表映射到另一个列表
我有以下两门课。Java 将类对象列表映射到另一个列表,java,class,kotlin,Java,Class,Kotlin,我有以下两门课。originalPerson和originalAddress。originalPerson有一个名为location的可用地址列表 class originalPerson ( val firstName: kotlin.String, val LastName: kotlin.String, val isAvailable: kotlin.Boolean, val location: kotlin.collections.List<orig
originalPerson
和originalAddress
。originalPerson
有一个名为location
的可用地址列表
class originalPerson (
val firstName: kotlin.String,
val LastName: kotlin.String,
val isAvailable: kotlin.Boolean,
val location: kotlin.collections.List<originalAddress>
)
class originalAddress (
val first: String? = null,
val second: String? = null,
val third: String? = null,
)
如果您能帮助我将
List
映射到List
,我将不胜感激。提前谢谢。如果我没弄错的话,你就快到了,只需要再拿一张地图:
val result = it.value.flatMap { r -> r.fieldsMap.entries}
.map { r -> customPerson(
r.firstName,
r.LastName,
r.location.map { customAddress(it.first, it.second) }
)
}
我只是像您最初那样使用map
,创建一个自定义地址列表
如果需要,可以为此创建一个方法:
private fun toCustomAddresses(originalPerson: originalPerson) =
originalPerson.location.map { customAddress(it.first, it.second) }
然后像这样使用它:
val result = it.value.flatMap { r -> r.fieldsMap.entries}
.map { r -> customPerson(
r.firstName,
r.LastName,
toCustomAddresses(r)
)
}
或者甚至作为扩展函数:
private fun List<originalAddress>.toCustomAddresses() =
map { customAddress(it.first, it.second) }
val result = it.value.flatMap { r -> r.fieldsMap.entries}
.map { r -> customPerson(
r.firstName,
r.LastName,
r.location.toCustomAddresses()
)
}
private fun List.tocustomaddress()=
映射{customAddress(it.first,it.second)}
val result=it.value.flatMap{r->r.fieldsMap.entries}
.map{r->customPerson(
r、 名字,
r、 姓,
r、 location.toCustomAddresses()
)
}
就我个人而言,我更喜欢这种方法,但我认为这取决于您和您自己的指导方针。这些是否需要是不相关的课程?您的OriginalPerson类(按照惯例,类名总是以大写字母开头)基本上是您的CustomPerson,并添加了一些字段;因此,显而易见的实现是将OriginalPerson作为CustomPerson的子类;这样,您就不必重复它们共享的字段(构造函数中可能除外)。你不需要做任何映射;OriginalPerson是(特定类型的)CustomPerson,因此您可以在任何需要CustomPerson的地方使用它。类似地,OriginalAddress可以是CustomAddress的子类。(整洁地处理地址列表会稍微复杂一些,并且可能需要CustomPerson类上的类型参数。)
val result = it.value.flatMap { r -> r.fieldsMap.entries}
.map { r -> customPerson(
r.firstName,
r.LastName,
toCustomAddresses(r)
)
}
private fun List<originalAddress>.toCustomAddresses() =
map { customAddress(it.first, it.second) }
val result = it.value.flatMap { r -> r.fieldsMap.entries}
.map { r -> customPerson(
r.firstName,
r.LastName,
r.location.toCustomAddresses()
)
}