从一组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这样的库?
答案 0 :(得分:1)
我会尝试这样的事情:
fun <A : Comparable<A>> alternativeSortAndGroup(set: Set<A>): List<Set<A>> =
set.sorted().groupBy { it }.values.map { it.toSet() }