私は与えられたlistitemクラスを持っています:
class Vector
{
public int Column { get; set; }
public int Row { get; set; }
public int TableID { get; set; }
public Vector(int column, int row, int tableID)
{
TableID = tableID;
Row = row;
Column = column;
}
}
後で、このアイテムの型付きリストがあり、特定のベクトル (列、行、テーブル) がこのリストに既に追加されているかどうかを確認したいと考えています。もちろん、簡単な解決策:
var items = new List<Vector>();
items.Add(new Vector(1, 2, 3));
items.Add(new Vector(5, 6, 7));
for (int i = 0; i < 1000; i++)
{
if (items.Any(e => e.Column == 1 && e.Row == 2 && e.TableID == 3))
{
// do something
}
}
はい、機能していますが...リスト内のアイテムが増えるにつれて、一致するアイテムを見つけるためにすべてのアイテムを列挙する必要があるため、指数関数的に遅くなります。
最後に私の質問は次のとおりです。
Can you recommend other data structure to allow "fast contains"? I mean at least linear algorithm. Any will do, I need only store 3 related int and check the containment later.