[英]How to sort Arraylist<String > based on another arraylist<String> in Kotlin
在我的应用程序中,我有2个arraylist。 一个来自服务器,另一个来自资产。 我想根据Kotlin中资产arraylist的顺序对服务器arraylist进行排序。 例如val serverArraylist = {“ xyz”,“ abc”,“ pqr”} val assetList = {“ abc”,“ pqr”,“ xyz”}
预期的输出应为serverArraylist = {“ abc”,“ pqr”,“ xyz”}
这两个列表可能并不总是包含相同数量的元素。 有时serverlist可能包含较少的元素,但不包含本地列表以外的元素。 就像,serverList = {xyz,pqr}然后期望的列表应该是severList = {pqr,xyz}
任何帮助或想法高度赞赏。 提前致谢。
过去,列表A的排序基于列表B的排序时,我遇到过类似的问题。如果列表大小不同,我认为它不会起作用。 否则,您需要控制排序中的'swap'方法,以便交换列表B元素时,列表A中的元素也要交换。我不知道在Kotlin排序方法中覆盖此方法的方法过去,我编写了自己的冒泡排序方法,并且在两个地方都进行了交换。 其他张贴者给出了以下信息可能会有所帮助: 使用比较器和交换功能对Java进行排序
当serverArraylist
只包含也包含在元素assetsList
,你不需要任何排序名单。 您唯一需要做的就是过滤assetsList
使其仅包含serverArraylist
的元素。
assetsList.filter { it in serverArraylist }
val a = listOf("xyz","abc" ,"pqr" )
val b = listOf("abc" ,"pqr", "xyz")
val c = a + b
val d = c.distinct().sorted()
这会给你
[abc, pqr, xyz]
您可以清除serverArrayList,然后将资产列表中的所有元素添加到serverArrayList中。
如果您不熟悉ArrayList操作,则可以在此处找到更多信息。
编辑:我的道歉。 我本来不理解您的问题。 您可以使用哈希图来帮助您跟踪所需的索引和serverArrayList的元素。 该过程应如下所示:
请注意“越界”错误,因为获得的索引可能大于serverArrayList的大小,因为您提到的索引与资产列表相比可能更小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.