List无法维护唯一元素,但HashSet无法通过索引访问。怎么样?

时间:2012-10-04 04:11:15

标签: c# list data-structures hashset

我还是C#的新手。我希望在我正在编写的C#应用​​程序中有一个List<ElementObj>List必须维护一组唯一元素,即List中没有重复元素。我还打算根据type的{​​{1}}属性排序列表的顺序。

我打算使用ElementObj中的List数据结构。但System.Collections.Generics本身并不维护唯一性。因此,每次在向列表添加元素之前,我可能必须遍历整个列表以检查List中是否已存在元素。这听起来效率不高。

我读到我可以使用List。这将确保集合中元素的唯一性。但是,问题是我无法通过索引访问HashSet中的元素,比如HashSet

在这种情况下,最好的数据结构或有效解决方案是什么?

1 个答案:

答案 0 :(得分:1)

我会创建自己的集合类,它将对象内部保留在hashset和list中。

public class HashList<T> {
   private HashSet<T> _hashSet;
   private List<T> _list;

   public T this[int i]
   {
       return _list[i];
   }

   public void add(T item) 
   {
       if (_hashSet.add(item))
          _list.add(item);
   }
}