什么是在Kotlin中对集合进行排序和分组的简洁方法?

时间:2018-06-12 14:47:23

标签: sorting collections kotlin

从一组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 :(得分:1)

我会尝试这样的事情:

fun <A : Comparable<A>> alternativeSortAndGroup(set: Set<A>): List<Set<A>> =
        set.sorted().groupBy { it }.values.map { it.toSet() }