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 に答える