【发布时间】:2013-08-28 12:19:29
【问题描述】:
可能是一个显而易见的问题,但我已经看到了很多为什么要在列表/数组上使用 HashSet 的原因。 我听说它有 O(1) 用于删除和搜索数据。
我从未听说过为什么要在 HashSet 上使用列表。
为什么反之亦然?
【问题讨论】:
可能是一个显而易见的问题,但我已经看到了很多为什么要在列表/数组上使用 HashSet 的原因。 我听说它有 O(1) 用于删除和搜索数据。
我从未听说过为什么要在 HashSet 上使用列表。
为什么反之亦然?
【问题讨论】:
HashSet 不允许HashSet 没有隐式顺序它们有不同的语义。列表是有序的(按插入顺序),允许重复,并按索引提供随机访问;哈希集是无序的,不允许重复(根据设计删除它们),并且不提供随机访问。两者都是完全有效的,简单地说:适用于不同的场景。
【讨论】:
Contains。遗憾的是,您不能重载相等/gethash 方法并通过使用“相似”项目来获取列表中的项目。
Hashtable?这与 HashSet<T> 不同的 API。
首先,您可以将重复项插入到列表/数组中。
返回值类型:
System.Boolean
如果元素被添加到 HashSet 对象,则为真;
如果元素已经存在则返回 false。
【讨论】:
我参加聚会很晚了,但我想通过转过头来为所选答案添加一些内容:
何时使用 HashSet 而不是 List?
请记住,您也可以通过 HashSet “foreach”。
Rango 说得对,性能有时被高估了;但是如果性能很关键(并且顺序不重要),HashSet 可以比 List 快很多。
【讨论】: