【问题标题】:Sorting ArrayList in Kotlin在 Kotlin 中对 ArrayList 进行排序
【发布时间】:2020-07-10 13:35:20
【问题描述】:

我有一个 ArrayList 的 ArrayList 我想要实现的是,按降序(基于从最高到最低的列表大小)对它们进行排序,以获得最大的优先。

我在 java 中使用 Collections 做了同样的事情。它在那里工作得非常好,但现在我无法在 Koltin 中实现这一点,我收到了 ERROR.

考虑一下我有class Foo()

 private var allHistoryList: ArrayList<ArrayList<Foo>> = arrayListOf()


 /**
             * Sorting array of array list to get Biggest to smallest array List based of size
             */

  Collections.sort(allHistoryList, object: Comparator<ArrayList>{
        override fun compare(var a1, var a2) :Int {
            return a2.size() - a1.size()
        }

    }


  Collections.sort(allHistoryList, object: Comparator<ArrayList>{
                override fun compare(var a1 : ArrayList<*>, var a2 :ArrayList<*>) :Int {
                    return a2.size() - a1.size()
                }

            }

            )
            //end of sorting

             /**
             * Sorting array of array list to get Biggest to smallest array List based of size
             */

            Collections.sort(allHistoryList, new Comparator<ArrayList>() {
                public int compare(ArrayList a1, ArrayList a2) {
                    return a2.size() - a1.size(); // working fine in Java.
                }
            });//end of sorting

【问题讨论】:

  • 你遇到了什么错误?
  • allHistoryList的类型是什么?
  • 暂时把它当成Foo吧。? @GiorgioAntonioli 及其非通用列表。

标签: android arrays sorting kotlin collections


【解决方案1】:

在 Kotlin 中,只有一行代码:

allHistoryList.sortByDescending { list -> list.size }

sortByDescending 方法对原始列表进行变异,使用列表的大小作为选择器对其进行降序排序,以进行元素之间的比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2016-11-16
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    相关资源
    最近更新 更多