来自O(1)</t>中的HashSet <t>的GetElement

时间:2013-12-15 07:20:44

标签: c# .net hashset

我编写代码,但我需要它更快地工作,而不是O(n)。

    public T GetElementAt(int index)
    {        
        return hashSet.ElementAt(index);
    }

和另一个

    public T GetElementAt(int index)
    {
        var enumerator = hashset.GetEnumerator();
        for (int i = 0; i < index; i++)
        {
            enumerator.MoveNext();
        }
        return enumerator.Current;
    }

请帮助我,我不知道该怎么做。

P.S。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:2)

看起来您可能正在使用HashSet<T>用于错误的目的。

套装专为:

而设计
  1. 确保独特性
  2. 在需要时提取所有成员的能力
  3. 检查提供的商品是否已成为会员
  4. HashSet<T>执行上述操作,并且非常快。但这就是它的全部功能。

    集合没有排序,因此尝试获取 nth 值并没有任何意义或用途。

    对于你正在做的事情(通过编号项目偏移进行O(1)访问),List<T>将完美地完成。

    此答案here提供了HashSet<T>的详细说明。