我是科特林的新手。我需要您的帮助以对自定义数据类中的mutableList进行排序。我需要在列表中找到搜索元素,并将其放在列表顶部。通常,搜索元素位于最后一个元素中。所以我不知道该如何过滤。请给我一些建议,以实现这一目标。例如
资料类别
data class Person(val firstName: String, val lastName: String)
data class Item(val gender: Int, val human: List<Human>)
data class Human(val id: Int, val person: List<Person>)
我输入了一些虚假数据
val people = mutableListOf(
Item(1,
listOf(
Human(
1,
listOf(
Person("Ragnar", "Lodbrok"),
Person("Bjorn", "Ironside"),
Person("Sweyn", "Forkbeard")
)
),
Human(
2,
listOf(
Person("Ragnar", "Lodbrok"),
Person("Bjorn", "Ironside"),
Person("Sweyn", "Forkbeard")
)
)
)
)
)
如果我想搜索Forkbeard并想放在列表的顶部。但是我无法做到这一点。所以请给我一些好的建议。
我尝试了这个但是没用
people.forEach { people ->
people.human.forEach { human ->
human.person.sortedByDescending { person ->
person.lastName == "Forkbeard"
}
}
}
我得到这个
[Item(gender=1, human=[Human(id=1, person=[Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Sweyn, lastName=Forkbeard)]), Human(id=2, person=[Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Sweyn, lastName=Forkbeard)])])]
回答
我要这个
[Item(gender=1, human=[Human(id=1, person=[Person(firstName=Sweyn, lastName=Forkbeard),Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside)]), Human(id=2, person=[Person(firstName=Sweyn, lastName=Forkbeard),Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside)])])]
[ Sweyn Forkbeard, Ragnar Lodbrok, Bjorn Ironside ]
非常感谢
要从列表中获取单个项目,可以使用以下first
功能:
val sweyn: Person = people.first { it.lastName == "Forkbeard" }
然后,在顶部添加sweyn:
people.remove(sweyn)
people.add(0, sweyn)
如果您需要不断这样做,也许您正在寻找一个队列
编辑:
对于嵌套的人员列表,如果person
在Human
数据类中将的类型更改为MutableList,则可以执行以下操作:
people.forEach { people ->
people.human.forEach { human ->
val sweyn: Person = human.person.first { it.lastName == "Forkbeard" }
human.person.remove(sweyn)
human.person.add(0, sweyn)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句