获取HashSet的位置
本文关键字:位置 HashSet 获取 | 更新日期: 2023-09-27 18:15:39
是否有办法从HashSet
抓取第三行?像
HashSet<string> ContinuedForums = new HashSet<string>();
ContinuedForums.add("a");
ContinuedForums.add("b");
string hellow = ContinuedForums[1];
是的,我想使用HashSet
HashSet<T>
本质上是无序的
您可以通过ContinuedForums.Skip(2).First()
获取第三个元素,但这不一定是您添加的"第三个"元素,并且顺序将随着您添加或删除元素而改变。
如果您需要保持顺序,那么HashSet<T>
可能是错误的集合类型。
如果你想平衡顺序和性能,你可能最好保持两个结构…HashSet
如果你在第三个添加的上下文中谈论"third",那么就没有办法了。HashSet不公开该信息。这是HashSet内部实现的一个未记录的副作用,如果您将这些字符串添加到HashSet:"one","two","three",如果您枚举其内容,您将以与添加内容相同的顺序返回内容。但由于这是未记录的行为,因此编写依赖于该行为的代码将是一个很大的错误。原因是HashSet的未来版本可能会以完全不同的方式运行。还要注意,如果你要从HashSet中删除"2",然后添加"4",那么对HashSet进行枚举可能会返回"1","4","3"。
"Position"的整个概念是HashSet的内部实现细节。它在其方法和属性中没有公开任何承诺提供有关位置信息的内容。因此,对于HashSet的用户来说,位置的概念是不存在的。
如果集合中的顺序很重要,可以使用SortedSet。
这将不会按照您添加项的顺序显示它们,而是对它们进行排序。