提问人:N8W1nD 提问时间:11/6/2023 最后编辑:N8W1nD 更新时间:11/8/2023 访问量:60
ICollection.Count 和 Array.Length 属性的时间复杂度
Time Complexity of ICollection.Count and Array.Length Property
问:
我想知道 ICollection.Count 是否只是一个查找(O(1)中的时间复杂度)或迭代集合。Array.Length 属性也是如此。
另外,如果我可以选择同时使用两者,那么使用哪一个更好?
答:
3赞
AgentFire
11/6/2023
#1
Array.Length
是一个 O(1) 操作 - 长度被存储并简单地读取返回给用户。
ICollection.Count
是接口的成员。接口是协定,因此不包含实现。
因此,任何人都可以编写他们想要的任何实现,因此在一般情况下,复杂性是不确定的。
然而,通过(a)成员是一个属性,并且(b)接口本身是一个独立的实体,它强烈暗示它也应该具有O(1)复杂性。Count
IEnumerable<>
评论
2赞
gunr2171
11/6/2023
“接口......不要包含实现“好吧,他们可以,但请不要这样做
评论
ICollection
ICollection<T>