是否有一种方法可以在Kotlin中设置Sequence
的状态以告知数据已排序?
我知道我可以按照以下方式创建Kotlin Sequence
:
generateSequence(0) { it + 1 }.windowed(size = 100, step = 1)
我想如果知道序列是有序的,那么对该序列的某些操作会更高效。例如,distinct()
。如果顺序不正确,则需要使用临时存储。有没有办法生成此序列并告诉Kotlin我们知道数据已经排序了?
答案 0 :(得分:0)
由于序列是惰性的并且可能是无限的,因此除了 sequence 排序之外的任何排序概念都将被认为是邪恶的。进行迭代时,如何得知下一个(最大)值?
也就是说,甚至还不清楚“排序(无限)序列”是一个定义明确,更不用说的有用概念(在编程库的上下文中;在数学中,当然完全可以!)。
根据您计划对结果集合进行的操作,可以使用排序后的集合:
generateSequence(0) { it + 1 }.windowed(size = 100, step = 1).
toSortedSet(Comparator { o1, o2 -> o1.sum() - o2.sum() })
您定义了一个列表序列,并且尚不清楚如何排序这些列表。
注意事项: