可能是一个显而易见的问题,但我已经看到了很多为什么要在列表/数组上使用 HashSet 的原因。我听说它有 O(1) 用于删除和搜索数据。
我从未听说过为什么要在 HashSet 上使用列表。
那么为什么反过来呢?
HashSet
不允许HashSet
没有隐式顺序它们有不同的语义。列表是有序的(按插入顺序),允许重复,并按索引提供随机访问;哈希集是无序的,不允许重复(根据设计删除它们),并且不提供随机访问。两者都是完全有效的,简单地说:适用于不同的场景。
Well for one, you can insert duplicates into a List/Array.
From HashSet.Add Method
Return Value Type:
System.Boolean
true if the element is added to the HashSet object;
false if the element is already present.
我参加聚会已经很晚了,但我想通过转过头来为所选答案添加一些内容:
何时在 List 上使用 HashSet?
请记住,您也可以通过 HashSet “foreach”。
Rango 说得对,有时会高估绩效。但是如果性能很关键(并且顺序不重要),HashSets 可以比 Lists 快很多。