Clojure中的不可变队列

米克拉

在Clojure中获取简单,有效的不可变队列数据类型的最佳方法是什么?

它仅需要两个操作,即具有通常语义的入队和出队。

我当然考虑过列表和向量,但是我知道它们在结束时和开始时分别具有相对较差的性能(即O(n)或更差)-因此对于队列而言并不理想!

理想情况下,我想为入队和出队操作使用O(log n)的适当持久数据结构。

米克拉

问题已解决-为可能会有所帮助的其他人提供解决方案。

我发现Clojure具有执行所需操作的clojure.lang.PersistentQueue类。

您可以创建一个这样的实例:

(def x (atom clojure.lang.PersistentQueue/EMPTY))

据我所知,当前您需要使用Java互操作来创建实例,但是正如Michal有益地指出的那样,您可以随后使用peek,pop和conj。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章