gpt4 book ai didi

clojure - Clojure 中的双端队列

转载 作者:行者123 更新时间:2023-12-04 22:56:54 27 4
gpt4 key购买 nike

Clojure 中有双端队列吗?我的印象是 Clojure 的 PersistentQueue 是单端的(我错了吗?)。我需要能够从队列的任一端删除(即“pop”)和“peek”数据。我所说的双端队列的解释是 https://en.wikipedia.org/wiki/Double-ended_queue .

我看到 Java 有一个双端队列,但我不确定如何在 Clojure 中实例化队列对象。尝试创建一个新队列:

(java.util.Dequeue.) 

给出错误:

No matching ctor found for interface java.util.Queue.

最佳答案

Is there a double-ended queue in Clojure?

AFAIK 编号

My impression is Clojure's PersistentQueue is single ended (am I wrong?).

它只允许 conj 在结尾和 peek/pop 从头开始​​。

I see that Java has a double-ended queue, but I'm unsure how to instantiate the queue object in Clojure.

你不能实例化 java.util.Queue因为它是 interface .看看子接口(interface)java.util.Deque及其实现类:

您可以创建和使用例如 ArrayDeque,如下所示:

(def deque (java.util.ArrayDeque. [1 2 3]))
;;=> 'user/deque

(.pollFirst deque)
;;=> 1

但是,与其为互操作语法和可变集合而苦苦挣扎,不如查看 deque-clojure它提供了 Clojure 中的持久实现。

关于clojure - Clojure 中的双端队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com