PersistentQueue实现了Sequential接口,但没有实现java.util.List接口。正如Sequential一样,列表形成了一个相等的分区。这意味着您可能会得到非传递性相等的
(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
这是因为PersistentQueue是Sequential,但不是List,ArrayList是List但不是Sequential,而PersistentVector则是两者都是。