Dar*_*ylG 4 queue interop clojure
在Clojure中有一个双端队列吗?我的印象是Clojure PersistentQueue是单端的(我错了吗?).我需要能够从队列的任一端删除(即"弹出")和"查看"数据.我对双端队列的解释是https://en.wikipedia.org/wiki/Double-ended_queue.
我看到Java有一个双端队列,但我不确定如何在Clojure中实例化队列对象.尝试创建一个新队列:
(java.util.Dequeue.)
Run Code Online (Sandbox Code Playgroud)
给出错误:
找不到接口java.util.Queue的匹配ctor.
在Clojure中有一个双端队列吗?
AFAIK没有.
我的印象是Clojure
PersistentQueue是单端的(我错了吗?).
它只允许conj在结束和peek/或pop从开始.
我看到Java有一个双端队列,但我不确定如何在Clojure中实例化队列对象.
您无法实例化,java.util.Queue因为它是一个接口.看看子接口java.util.Deque及其实现类:
例如,您可以创建和使用ArrayDeque如下:
(def deque (java.util.ArrayDeque. [1 2 3]))
;;=> 'user/deque
(.pollFirst deque)
;;=> 1
Run Code Online (Sandbox Code Playgroud)
但是,您可能希望查看在Clojure中提供持久实现的deque-clojure,而不是努力使用互操作语法和可变集合.