2014-04-15 28 views

cevap

8

O O(1)

Sen clojure.lang.PersistentSet Java kaynak kodunda _count alanını koruduğunu gözlemleyerek doğrulayabilirsiniz geçerli:

https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentList.java

+0

Teşekkür bakmak beni doğru yere işaret için! Şimdi saymak için O (1) performansını gösteren 'Counted' arayüzünü ve PersistSet'in bunu uygulayabildiğini görebiliyorum. '(örnek? clojure.lang.Counted # {: a: b:: c}) => true ' –

+3

Evet' Sayıldı', kontrol edilmesi için kullanışlı bir işaretleyici arabirimdir. Her ne kadar kesinlikle * garanti etmediğine dikkat etse de, O (1) davranış - gerçek bir somut sınıf uygulamasını mutlaka kontrol etmelisiniz. Teorik olarak, birisi "Sayım" ı kötü (O 2) performansıyla ya da daha kötüsüyle uygulayabilirdi. – mikera