在Clojure中获取简单,有效的不可变队列数据类型的最佳方法是什么?
它仅需要两个操作,即具有通常语义的入队和出队。
我当然考虑过列表和向量,但是我知道它们在结束时和开始时分别具有相对较差的性能(即O(n)或更差)-因此对于队列而言并不理想!
理想情况下,我想为入队和出队操作使用O(log n)的适当持久数据结构。
问题已解决-为可能会有所帮助的其他人提供解决方案。
我发现Clojure具有执行所需操作的clojure.lang.PersistentQueue类。
您可以创建一个这样的实例:
(def x (atom clojure.lang.PersistentQueue/EMPTY))
据我所知,当前您需要使用Java互操作来创建实例,但是正如Michal有益地指出的那样,您可以随后使用peek,pop和conj。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句