0

我还是 C# 的新手。我想List<ElementObj>在我正在编写的 C# 应用程序中有一个。必须维护一组独特的List元素,即List. 我还打算根据 的属性对列表的顺序进行排序typeElementObj

我打算使用List来自System.Collections.Generics. 但List不要单独保持独特性。所以,每次在我向列表中添加一个元素之前,我可能必须遍历整个列表来检查一个元素是否已经存在于List. 这听起来不是很有效。

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

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

4

1 回答 1

1

我会创建自己的集合类,将对象内部保存在哈希集和列表中。

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);
   }
}
于 2012-10-04T04:22:36.360 回答