繁体   English   中英

在C#中搜索字符串数组列表的有效方法

[英]Efficient way to search List of String Arrays in C#

我有这样的结构,

String[] variable1= new String["ABC", "FSS" , "FSFS", "GDGDDS"];
String[] variable2= new String["SA", "GS" , "QE", "HF"];


static List<String[]> allList = new List<String[]>();;

allList .Add(variable1);
allList .Add(variable2);

当提供一个String ,我想搜索allList并提供结果(如果找到了该数组)。

对以有效方式进行存档有帮助吗?

两种提供的解决方案都是线性运行的,如果您有很多单词并且进行很多查询,这将太慢。

您可以使用字典。 字典在内部使用哈希表,它会快很多。

要将所有字符串放入字典中,可以执行以下操作:

Dictionary<String, String[]> dict = new Dictionary<String, String[]>();
foreach(String[] arr in allList)
    foreach(String str in arr)
        dict[str] = arr;

然后,您可以轻松地搜索它:

String s = "ABC";
if(dict.ContainsKey(s))
    // result is dict[s]
else
    // String is not in any array

希望能帮助到你!

您也可以尝试

var output=allList.Where(x=>(string.Join(",", x)+",").IndexOf(input+",")!=-1)
                  .FirstOrDefault();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM