Поскольку последовательности являются ленивыми и потенциально бесконечными, любая концепция упорядочения, кроме упорядочения sequence , будет порочна для обработки. Итерируя, как вы можете узнать, что нашли следующее (наибольшее) значение?
То есть даже не ясно, что «отсортированная (бесконечная) последовательность» является четко определенной, не говоря уже о полезной концепции (в контексте библиотеки программирования; в математике это, конечно, прекрасно!).
В зависимости от того, что вы планируете делать с результирующей коллекцией, вы можете использовать отсортированные наборы:
generateSequence(0) { it + 1 }.windowed(size = 100, step = 1).
toSortedSet(Comparator { o1, o2 -> o1.sum() - o2.sum() })
Вы определили последовательность списков, и само по себе не ясно, как их упорядочить.
Предостережения:
- Больше не ленивый.
- Дубликаты не допускаются; в библиотеке Kotlin, по-видимому, отсутствует реализация с множеством множеств (или сумкой, или подсчитанным множеством, или ...). Легко моделировать, составляя значения в парах со счетчиками.
- Некоторые операции обходятся дороже, чем линейная последовательность без гарантии заказа.