如何根据Kotlin中的另一个arraylist <String>排序Arraylist <String>

时间:2019-08-29 19:28:45

标签: android sorting arraylist kotlin comparator

在我的应用程序中,我有2个数组列表。一个来自服务器,另一个来自资产。 我想根据Kotlin中资产arraylist的顺序对服务器arraylist进行排序。 例如val serverArraylist = {“ xyz”,“ abc”,“ pqr”} val assetList = {“ abc”,“ pqr”,“ xyz”}

预期输出应为 serverArraylist = {“ abc”,“ pqr”,“ xyz”}

两个列表可能并不总是包含相同数量的元素。有时serverlist可能包含较少的元素,但不包含本地列表以外的元素。 喜欢, serverList = {xyz,pqr} 那么预期的清单应该是 severList = {pqr,xyz}

任何赞赏或帮助的想法。预先感谢。

4 个答案:

答案 0 :(得分:0)

过去,我遇到过类似的问题,其中列表A的排序基于列表B的排序。如果列表大小不同,我认为它不会起作用。否则,您需要控制排序中的'swap'方法,以便交换列表B元素时,列表A中的元素也要交换。我不知道在Kotlin排序方法中覆盖此方法的方法过去,我编写了自己的冒泡排序方法,并且在两个地方都进行了交换。其他张贴者对此也有帮助:java sorting with comparator and swap function

答案 1 :(得分:0)

如果serverArraylist仅包含assetsList中也包含的元素,则无需对任何列表进行排序。您唯一要做的就是过滤assetsList,使其仅包含serverArraylist的元素。

assetsList.filter { it in serverArraylist }

答案 2 :(得分:0)

 val a = listOf("xyz","abc" ,"pqr" )
 val b = listOf("abc" ,"pqr", "xyz")
 val c = a + b
 val d = c.distinct().sorted()

这会给你

[abc, pqr, xyz]

答案 3 :(得分:-1)

您可以清除serverArrayList,然后将资产列表中的所有元素添加到serverArrayList中。

如果您不熟悉ArrayList操作,可以找到更多的HERE

编辑:很抱歉。我本来不理解您的问题。您可以使用哈希图来帮助您跟踪所需的索引和serverArrayList的元素。该过程应如下所示:

  1. 遍历serverArrayList
  2. 对于serverArrayList中的每个元素,使用indexOf()从AssetsList中获取相应的索引。
  3. 将每对(索引,元素)放入哈希图中。
  4. 使用哈希图填充新的serverArrayList。

请注意“越界”错误,因为获得的索引可能大于serverArrayList的大小,因为您提到的索引可能比资产列表小。