clojure中计数函数的时间复杂度是多少?

clojure中计数函数的时间复杂度是多少?,clojure,Clojure,clojure中计数的时间复杂度是多少?以下是实现: 公共静态整数计数(对象o){ 如果(o==null) 返回0; else if(已计数的o实例) return((Counted)o.count(); else if(o IPersistentCollection实例){ ISeq s=序号(o); o=零; int i=0; for(;s!=null;s=s.next()){ 如果(s实例已计数) 返回i+s.count(); i++; } 返回i; } else if(o字符串实例) 返

clojure中计数的时间复杂度是多少?

以下是实现:

公共静态整数计数(对象o){
如果(o==null)
返回0;
else if(已计数的o实例)
return((Counted)o.count();
else if(o IPersistentCollection实例){
ISeq s=序号(o);
o=零;
int i=0;
for(;s!=null;s=s.next()){
如果(s实例已计数)
返回i+s.count();
i++;
}
返回i;
}
else if(o字符串实例)
返回((字符串)o).length();
else if(o集合实例)
返回((集合)o).size();
else if(o映射实例)
返回((Map)o).size();
else if(o.getClass().isArray())
返回数组.getLength(o);
抛出新的UnsupportedOperationException(“此类型不支持计数:”+o.getClass().getSimpleName());
}
因此,对于数组、字符串、集合、映射和任何实现计数的对象,都是O(1)。对于实现IPersistentCollection但未计算的任何内容,都是O(n)