持久队列实施序列但未实现java.util.List。列表和序列形成等价分区。这意味着您可能会得到非传递性等价。
(def q (conj clojure.lang.PersistentQueue/EMPTY 1 2 3)) ;=> #user/q (def al (doto (java.util.ArrayList.) (.add 1) (.add 2) (.add 3))) ;=> #user/al (def v [1 2 3]) ;=> #user/v (= al v) ;=> true (= v q) ;=> true (not= al q) ;=> true
这是因为持久队列是序列但不是列表,ArrayList是列表但不是序列,而持久向量两者都是。