Какой краткий способ сортировки и группировки набора в Kotlin? - PullRequest
0 голосов
/ 12 июня 2018

Из набора Comparable объектов я хотел бы получить отсортированный список наборов объектов, отсортированных по их естественному порядку.

Это мое решение:

  val set: Set<Comparable<A>> = makeThings()
  val sorted = set.sorted()
  val sortedAndGrouped = mutableListOf(mutableSetOf(sorted.first()))
  for(element in sorted.drop(1)) {
     val randomElementOfLastGroup = sortedAndGrouped.last().first()
     val doesNotBelongToLastGroup = randomElementOfLastGroup.compareTo(element) != 0
     if(doesNotBelongToLastGroup)
        sortedAndGrouped.add(mutableSetOf())
     sortedAndGrouped.last().add(element)
  }

Хотелось бы узнать, есть ли в Kotlin более лаконичная альтернатива.

Если нет, то использует ли она функции Java 8 или такую ​​библиотеку, как Guava?

1 Ответ

0 голосов
/ 12 июня 2018

Я бы попробовал что-то вроде этого:

fun <A : Comparable<A>> alternativeSortAndGroup(set: Set<A>): List<Set<A>> =
        set.sorted().groupBy { it }.values.map { it.toSet() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...