c# – 简单的查找功能

我有一个简单的结构,我想用作查找表:

public struct TileTypeSize
{
    public string type;
    public Size size;

    public TileTypeSize(string typeIn, Size sizeIn)
    {
        type = typeIn;
        size = sizeIn;
    }
}

我这样填充这个:

        tileTypeSizeList.Add(new TileTypeSize("W",rectangleSizeWall));
        tileTypeSizeList.Add(new TileTypeSize("p",rectangleSizePill));
        tileTypeSizeList.Add(new TileTypeSize("P",rectangleSizePowerPill));
        tileTypeSizeList.Add(new TileTypeSize("_",rectangleSizeWall));
        tileTypeSizeList.Add(new TileTypeSize("=",rectangleSizeWall));

查找给定类型的大小的最有效方法是什么?

提前致谢!

解决方法:

一般来说,最有效的方法是将数据放入Dictionary或类似的容器中(SortedDictionarySortedList与Dictionary有很小的差异,在某些情况下更适合):

var dict = new Dictionary<string, Size>
{
     { "W", rectangleSizeWall },
     // etc
}

然后:

var size = dict["W"];

如果有理由,您当然可以按字典顺序迭代字典中的值.

如果您将要查找5种类型(即问题的大小非常小),那么像您这样的直接列表可能比关联容器更快.所以:

var tileStruct = tileTypeSizeList.FirstOrDefault(s => s.type == "W");
if (tileStruct.type == "") {
    // not found
}
else {
    var size = tileStruct.size;
}

如果您确定永远不会有搜索错过,您可以删除“如果找到”检查.

上一篇:Python--day65--模板语言之变量相关语法


下一篇:使用Java进行小数据集的数据查找方法?