Kotlin是否提供功能集合类型?

时间:2018-10-10 19:06:04

标签: kotlin

Kotlin是否提供功能性收集类型?像Scala中的不可变队列或堆栈之类的东西? 如果不是,是否有任何好的库可以为Kotlin提供功能性的集合类型(基于Kotlin的Any)?

3 个答案:

答案 0 :(得分:1)

箭头库

  

Λrow是Kotlin中用于类型化函数编程的库。

https://arrow-kt.io/

答案 1 :(得分:0)

val myarray: Array<out Any> = arrayOfNull(100)

https://kotlinlang.org/docs/reference/basic-types.html#arrays

<Any>分配给<String>是错误的,尽管并非相反。

答案 2 :(得分:0)

因此解决方案实际上并不难。使用链接列表可以很容易地实现持久性堆栈,对于push()和pop()来说,复杂度均为O(1)。至于队列,似乎没有太多选择,只能接受入队或出队的O(n)复杂性。在这种情况下,我可以简单地将一个堆栈用作输入(入队),将另一个堆栈用作optput(出队)。当输出为空时,仅需反转输入堆栈并与输出交换-最好的主意是在dequeue()上执行操作。 这可能不是最优雅的方法,对于大量元素(也许添加一个队列/堆栈树以限制反转),我可能需要重新考虑一下,但是对于我目前的需求,这应该足够了。感谢大家的建议。

持久性堆栈实现- https://github.com/nekomatic/types/blob/graph/src/main/kotlin/com/nekomatic/types/Stack.kt

持久队列实施-https://github.com/nekomatic/types/blob/graph/src/main/kotlin/com/nekomatic/types/Queue.kt