1

我有这样的结构,

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提供 a 时,我想搜索allList 并提供结果,如果找到了哪个数组。

有什么帮助以有效的方式存档吗?

4

2 回答 2

6

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

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

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

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

希望能帮助到你!

于 2013-07-21T18:19:33.457 回答
0

你也可以试试这个

var output=allList.Where(x=>(string.Join(",", x)+",").IndexOf(input+",")!=-1)
                  .FirstOrDefault();
于 2013-07-21T18:39:21.300 回答