我有这样的结构,
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
并提供结果,如果找到了数组。
以高效方式存档的任何帮助?
答案 0 :(得分:5)
两个提供的解决方案都以线性时间运行,如果你有很多单词并且进行大量查询,这将会太慢。
您可以使用词典。字典在内部使用哈希表,它会快得多。
要将所有字符串放入字典中,您可以执行以下操作:
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
希望它有所帮助!
答案 1 :(得分:0)
你也可以尝试这个
var output=allList.Where(x=>(string.Join(",", x)+",").IndexOf(input+",")!=-1)
.FirstOrDefault();