我还是C#的新手。我希望在我正在编写的C#应用程序中有一个List<ElementObj>
。 List
必须维护一组唯一元素,即List
中没有重复元素。我还打算根据type
的{{1}}属性排序列表的顺序。
我打算使用ElementObj
中的List
数据结构。但System.Collections.Generics
本身并不维护唯一性。因此,每次在向列表添加元素之前,我可能必须遍历整个列表以检查List
中是否已存在元素。这听起来效率不高。
我读到我可以使用List
。这将确保集合中元素的唯一性。但是,问题是我无法通过索引访问HashSet
中的元素,比如HashSet
。
在这种情况下,最好的数据结构或有效解决方案是什么?
答案 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);
}
}