我正在寻找一种最有效的方法来搜索一个类的大型数组。我有一系列瓷砖,需要通过ID找到它们,我提出的唯一方法是下面虽然我确信有更快的方法,可能是某种Array.Find
,但我是不确定正确的语法。任何帮助将不胜感激。
class Program
{
public static tiles[,] tile = new tiles[100,100];
static void Main(string[] args)
{
for (int x = 0; x < 100; x++)
{
for (int y = 0; y < 100; y++)
{
if (tile[x, y].ID == 2)
{
// DO SOMETHING
}
}
}
}
}
public class tiles
{
public int _ID;
public int ID
{
get { return _ID; }
set { _ID = value; }
}
}
答案 0 :(得分:1)
数组只能用于线性搜索,这意味着您必须逐个遍历元素才能找到所需的元素。
在您的情况下,由于您似乎想要根据其ID找到一个磁贴,我建议您使用额外的Dictionary<int, Tile>
,其中Id是关键,以检索分摊的O(1)中的特定磁贴时间(如果你不介意额外的空间,并假设你只需要检索磁贴,而不是它在数组中的索引)。您仍然可以使用二维数组按索引检索切片。
优点:
缺点: