持久队列实现了Sequential但没有实现java.util.List接口。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两者都是。