遍历数组并根据对象属性创建新数组
Loop through array and creating new arrays based on object properties
我有一个包含混合用户库存对象的数组。
这些对象具有 object.name 属性。
当我遍历数组时,它已经按名称排序。
如果我们查看数组中的 obj.name ,它将具有此结构
[球,球,猴子,猴子,香肠]
我想遍历数组。
获取所有具有通用名称属性的元素并从中创建一个新数组
元素。
有什么建议吗?如果我们可以将数组命名为 object.name 属性,则会加分。
我正在使用 Kotlin。
这里是 code/thoughts 我要开始了,
如果这不可行,我们将不胜感激任何其他建议
private fun sortElements(){
val temp = userstuff[0].name //but what if they only have 1 of these names.. doesnt work
userstuff.forEach { element ->
if(temp == element.name)
we have another item with same name put in appropriate array
else{
new array
loop
}
如果我对你的用例的理解正确,你应该可以这样做:
private fun sortElements(input: List<Stuff>) = input.groupBy { it.name }
这里的想法是将每个元素放入 Map
中,其中键是 name
值,值是对象的 List
。
举个例子,假设我有一个名为 Stuff
:
的 data class
data class Stuff(
val name: String,
val otherField: Int,
)
测试数据如下所示:
val userStuff = listOf(
Stuff("ball", 242),
Stuff("ball", 11),
Stuff("monkey", 848),
Stuff("monkey", 455),
Stuff("sausage", 836),
)
调用上面的函数会得到这样的结果(这将是一个 Map<String, Stuff>
,我只是把它打印出来所以你可以看看里面有什么):
{
ball=[
Stuff(name=ball, otherField=242),
Stuff(name=ball, otherField=11)
],
monkey=[
Stuff(name=monkey, otherField=848),
Stuff(name=monkey, otherField=455)
],
sausage=[
Stuff(name=sausage, otherField=836)
]
}
我有一个包含混合用户库存对象的数组。
这些对象具有 object.name 属性。
当我遍历数组时,它已经按名称排序。
如果我们查看数组中的 obj.name ,它将具有此结构
[球,球,猴子,猴子,香肠]
我想遍历数组。
获取所有具有通用名称属性的元素并从中创建一个新数组 元素。
有什么建议吗?如果我们可以将数组命名为 object.name 属性,则会加分。 我正在使用 Kotlin。
这里是 code/thoughts 我要开始了, 如果这不可行,我们将不胜感激任何其他建议
private fun sortElements(){
val temp = userstuff[0].name //but what if they only have 1 of these names.. doesnt work
userstuff.forEach { element ->
if(temp == element.name)
we have another item with same name put in appropriate array
else{
new array
loop
}
如果我对你的用例的理解正确,你应该可以这样做:
private fun sortElements(input: List<Stuff>) = input.groupBy { it.name }
这里的想法是将每个元素放入 Map
中,其中键是 name
值,值是对象的 List
。
举个例子,假设我有一个名为 Stuff
:
data class
data class Stuff(
val name: String,
val otherField: Int,
)
测试数据如下所示:
val userStuff = listOf(
Stuff("ball", 242),
Stuff("ball", 11),
Stuff("monkey", 848),
Stuff("monkey", 455),
Stuff("sausage", 836),
)
调用上面的函数会得到这样的结果(这将是一个 Map<String, Stuff>
,我只是把它打印出来所以你可以看看里面有什么):
{
ball=[
Stuff(name=ball, otherField=242),
Stuff(name=ball, otherField=11)
],
monkey=[
Stuff(name=monkey, otherField=848),
Stuff(name=monkey, otherField=455)
],
sausage=[
Stuff(name=sausage, otherField=836)
]
}