私は、匹敵しないフィールド値でそれらをグループ化する連想コンテナに入れたいオブジェクトをいくつか持っています。私は以下の持っていたので、場合:類似しないオブジェクトをグループ化するSortedSetのようなコンテナがありますか?
using System.Collections.Generic;
using Pair = System.Tuple<Penguin, int>;
class Penguin {}
class Whatever {
public static void Main(string[] args) {
Penguin emperor = new Penguin(),
adelie = new Penguin(),
batmanVillain = new Penguin();
var okay = new HypotheticalCollection<Pair>(5);
okay.Add(new Pair(emperor, 1));
okay.Add(new Pair(adelie, 2));
okay.Add(new Pair(batmanVillain, 3));
okay.Add(new Pair(emperor, -500));
okay.Add(new Pair(batmanVillain, 5));
}
}
を、私はHypotheticalCollectionを繰り返し処理、私は一緒に一緒に2回のemperor
エントリーと2つのbatmanVillain
のエントリを見たいだろうが、私は最初にどちらのを気にしません。しかし、私は対数時間でエントリを参照できるようにしたいと思います。
私がC++を使用していた場合は、アドレスでPenguin
をソートするだけですが、C#ではその贅沢はありません。今は各オブジェクトにシリアル番号を割り当てることで処理していますが、これはハッキリのような感じです。余分なスペースを必要としません。より良い方法は、おそらくReferenceLessThan
関数か何かですか?
なぜ[comparer](https://stackoverflow.com/questions/14336416/using-icomparer-for-sorting)を書きませんか?作成したら、SortedSet [constructor](https://msdn.microsoft.com/en-us/library/dd395024(v = vs.110).aspx)に渡すことができます。 – john