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を検索して結果を提供したいと思います。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 に答える