过滤最后一个元素并添加到可变列表Kotlin的列表顶部

Vivek Modi:

我是科特林的新手。我需要您的帮助以对自定义数据类中的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 ]

非常感谢

伊曼纽尔·瓜拉(Emmanuel Guerra):

要从列表中获取单个项目,可以使用以下first功能:

val sweyn: Person = people.first { it.lastName == "Forkbeard" }

然后,在顶部添加sweyn:

people.remove(sweyn)
people.add(0, sweyn)

如果您需要不断这样做,也许您正在寻找一个队列

编辑:

对于嵌套的人员列表,如果personHuman数据类中将的类型更改为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在 Kotlin 的以下程序中只存储/打印了添加到列表中的最后一个元素?

如何将一个列表元素分别添加到 2 个列表中?

如何将一个项目添加到列表框的顶部

仅将最后一个元素添加到 Android 中的 RecyclerView (Kotlin)

Groovy:将列表的某些元素添加到另一个列表

将值添加到上一个列表中的列表更改元素

如何将元素从另一个列表添加到列表?

根据R中的另一个列表将元素添加到列表

最后一个值只添加到列表中

如何将除法剩余的食物添加到最后一个列表?

WPF尝试将远程图像添加到列表视图,但只显示最后一个

将css类添加到列表项,但jQuery中的最后一个除外

循环只将最后一个结果添加到列表中

将当前值添加到列表中,然后与最后一个值进行比较

将值添加到列表的最后一个索引(LISP)

如何将一个列表中的元素添加到另一个列表?

从另一个列表的元素构造一个列表而不添加到堆内存

输入一个列表中的元素以添加到另一个列表中

如何将一个列表中的元素添加到另一个列表中?

附加到Python中的列表:每次都添加最后一个元素吗?

Java - 向不可变列表添加一个元素

索引列表列表的第一个元素并将其添加到新列表

最后将谓词中所有生成的列表添加到一个大列表中

Kotlin Android将另一个活动添加到列表中

如何将一个添加到列表元素?

Fortran使头指向第一个元素/添加到列表的末尾

通过jQuery将项目添加到元素列表中的第一个li

从最后一个元素到第一个元素添加到数组

仅添加到词典中的一个列表