android - 过滤最后一个元素并添加到可变列表kotlin中的列表顶部
问题描述
我是 Kotlin 的新手。我需要您的帮助来对自定义数据类中的 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 ]
非常感谢
解决方案
在 Kotlin 的一行中完成所有这些操作的一个技巧是sortBy
people.sortByDescending { it.lastName == "Forkbeard" }
推荐阅读
- c# - 从驱动程序获取 Cookie 并使用它们登录另一个驱动程序
- java - 在java中先用数字排序数据,再用字母排序
- python - 如何解决 GCP 上的硒问题
- apache-spark - 如何使用 pyspark 确定 pca 中的最佳特征数量
- java - 如何加载任意图像以使结果在 Java 中具有特定的 ColorModel?
- php - 无法在 Laravel 中检索上传的图像。我创建了存储链接。但它不会工作。我错过了什么吗?
- c# - 如何跨多个方法传递 Dapper TransactionScope
- sql-server - NHibernate Linq OrderBy+Select+Distinct 产生无效的 SQL
- java - 带有 Jetty 的 CDI 不工作(不注入 bean)
- javascript - 使用动态样式和模板渲染角度组件