有没有办法从 a 中获取第三排HashSet
?喜欢
HashSet<string> ContinuedForums = new HashSet<string>();
ContinuedForums.add("a");
ContinuedForums.add("b");
string hellow = ContinuedForums[1];
是的,我想使用HashSet
.
AHashSet<T>
本质上是无序的。
您可以通过 获取第三个元素ContinuedForums.Skip(2).First()
,但这不一定是您添加的“第三个”元素,并且在您添加或删除元素时顺序会发生变化。
如果您需要保留顺序,那么 aHashSet<T>
很可能是要使用的错误集合类型。它并非旨在通过索引保留顺序或访问。
如果你想平衡顺序和性能,你最好保留两个结构...... O(1) 查找的 HashSet<T> 和枚举(或快速索引访问器查找)的 List<T>。
如果您在添加第三个的上下文中谈论“第三个”,那么就没有办法了。HashSet 不会公开该信息。这是 HashSet 内部实现的一个未记录的副作用,如果您将这些字符串添加到 HashSet:“one”、“two”、“three”,如果您枚举,您将按照添加它们的顺序返回内容在其内容之上。但由于这是未记录的行为,因此编写依赖于该行为的代码将是一个大错误。原因是 HashSet 的未来版本可能会以完全不同的方式运行。另请注意,如果您要从 HashSet 中删除“二”,然后添加“四”,则对 HashSet 进行枚举可能会返回“一”、“四”、“三”。
“位置”的整个概念是 HashSet 的内部实现细节。它在其方法和属性中没有公开任何承诺提供有关位置的信息。所以,对于HashSet的用户来说,位置的概念是不存在的。
如果集合中的顺序很重要,您可以使用SortedSet。
这不会按照您添加它们的顺序为您提供项目,而是会对它们进行排序。