Сортировка ArrayList по Колтину по размеру - PullRequest
0 голосов
/ 30 марта 2020

У меня есть ArrayList из ArrayList, который я хочу получить: отсортировать их в порядке убывания (в зависимости от размера списка от самого высокого до самого низкого), чтобы получить наибольшее значение вначале и далее.

Я сделал то же самое в java с использованием Коллекций. Там все работало отлично, но сейчас я не могу этого добиться в Колтине. Я получаю ОШИБКУ. SAMPLE IMAGE

Считай, что у меня есть 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

1 Ответ

1 голос
/ 30 марта 2020

В Kotlin это всего одна строка:

allHistoryList.sortByDescending { list -> list.size }

Метод sortByDescending изменяет исходный список, сортируя его по убыванию, используя размер списка в качестве селектора для сравнения элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...