私は問題の答えを見つけるのに苦労しています。私が取り組んでいることに固有のいくつかのコードがあり、Unionの仕組みに関するドキュメントを見つけることができません。 C#の中核となる力学。だから問題はこれです。C#Union vs連続したデータのリストが含まれています
私は、この例と同様に動作しますデータのセットを持っている:
object[] someMainTypeArray = new object [n];
List<object> objList2 = new List<object>();
foreach (object obj in someMainTypeArray) {
List<object> objList1 = new List<object>() { "1","2","3" };
//each obj has a property that will generate a list of data
//objList1 is the result of the data specific to obj
//some of this data could be duplicates
//Which is better, this:
foreach (object test in objList1) {
if (!objList2.Contains(test)) {
objList2.Add(test);
}
}
//or this:
objList2 = objList2.Union(objList1).ToList();
//Also, assume this has to happen anywhere from 0 to 60 times per second
}
は、連合はすべての仕事をやらせるために、それがより効率的ですか?あるいは、Containsを使って各要素を比較する方が良いでしょうか?
両方の場合、できるだけ少ない処理時間でユニークなリストを作成するにはどうすればよいですか?
これは効率が重要です。また、これは宿題ではなく、仕事関連のもので、学習に関連するものだけです。
リストは、最終的にきれいにされ、再投入されるように、実行時に連続しています。リストの変更は、この例に似ている最終的な結果リストが最終的なリストを提示するために使用され、そのリストが空の場合、その失敗条件、およびそのリストは空ではなく、その成功条件です。
は、ここで作成したリストのいずれかの問題のコードの抜粋です:
Player.ClearMoves();
List<Pair<BoardLocation, BoardLocation>> attacking = new List<Pair<BoardLocation, BoardLocation>>();
foreach (ChessPiece p in Board[this.Player.Opponent]) {
if (p.TheoryMove(this.Location)) {
foreach (Pair<BoardLocation , BoardLocation> l in Utility.GetLocations(p.Location , this.Location)) {
if (!attacking.Contains(l)) {
attacking.Add(l);
}
}
}
}
if (attacking.Count < 1) {
return false;
}
ハッシュセット