在Koltin中对ArrayList进行排序 [英] Sorting ArrayList in Koltin

查看:769
本文介绍了在Koltin中对ArrayList进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个要实现的ArrayList的ArrayList,以降序对它们进行排序(基于从最高到最小的List大小),以获取最大的大小.

I've have a ArrayList of ArrayList what I want to achive is , to sort them in decending order (based on Highest to lowest List size ) to get largest first and onwards.

我在Java中使用Collections做过同样的事情.它在那儿工作得很好,但现在我无法在Koltin中实现这一点,但我遇到了错误.

I did same thing in java using Collections.It worked perfectly fine there but now I'm unable to achieve this in Koltin i'm getting 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

推荐答案

在Kotlin中,只有一行:

In Kotlin, it's just one line:

allHistoryList.sortByDescending { list -> list.size }

方法sortByDescending使用列表的大小作为选择器对元素进行比较,以对原始列表进行降序排列,从而对其进行突变.

The method sortByDescending mutates the original list sorting it descending using the size of the list as selector to make the comparison between elements.

这篇关于在Koltin中对ArrayList进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆