c# - 是否有 IList<T> 的实现,其中 Contains(T) 是 O(1) 操作?

标签 c# collections

我想知道是否有 IList<T>由像 HashSet<T> 这样的散列支持的实现但提供索引访问?

明确地说,我不关心如何实现,只是想知道是否有人知道它是否已经可用。

最佳答案

你可以实现 IList<T>自己并保留两个后备收藏品 - List<T> 一个HashSet<T> .基本上让 Visual Studio 为 IList<T> 中的所有内容提供“抛出异常”实现,然后针对每种方法确定是要将其代理到列表还是集合。

当然你必须小心重复等(定义 Add(x)Add(x)Remove(x)Contains(x) 的行为——你最终可能会在列表中而不是集合中找到它)但这不会太难。

关于c# - 是否有 IList<T> 的实现,其中 Contains(T) 是 O(1) 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443188/

相关文章:

c# - 使用 WPF 中的事件支持为游戏创建棋盘

scala - 如何将 Scala 数组转换为 Java 列表?

c# - 为什么不能同时使用 :base() and :this() in a C# constructor

c# - 委托(delegate)方法与一般方法

c# - 为 EF 6.x 和 EF Core 重用 EF 实体

java - 单线程 unmodifiableList 中的 ConcurrentModificationException

python - Python中的方括号和点符号有什么区别?

java - 未能使我的 ArrayList 成为线程安全的。线程中的异常 "main"java.lang.ClassCastException : What is wrong?

c# - 是否存在一种类型的集合或关联数组,其中键也是和/或值的一部分?

c# - 如何确保异地 javascript 不会影响网站性能?