2014-10-31 63 views
0

標題有點令人困惑,讓我試着解釋我正在嘗試做什麼。 我在同一時間收到2個字符串,它們彼此連接,每個收到,但可能與下一次收到的數據有關,也可能不會。計數2個元素

所以,如果我收到這樣的組合:

ID24 
PART2 

我想創建一個變量,將增加對組合的計數器,如:

ID24-PART2++ (1) 

然後,在下一個接收我可以得到這個:

ID59 
PART2 

所以我會增加特定的計數器:

ID59-PART2++ (1) 

要完成,如果我再次收到:

ID24 
PART2 

然後:

ID24-PART2++ (2) 

希望我解釋自己很好。性能很重要。

也許某種數組:

data["ID24"]["PART2"]++; 

回答

0

我會做的就是添加兩個字符串,並將其添加到字典作爲一個字符串:

Dictionary<Tuple<string,string>,int> stringDict = new Dictionary<Tuple<string,string>,int>(); 

然後爲您收到每個字符串對:

Tuple<string,string> stringTuple = new Tuple<string, string>(string1, string2); //string1 and string2 are the strings you recieve 

if(stringDict.ContainsKey(stringTuple)) 
    stringDict[stringTuple]++; 
else 
    stringDict.Add(stringTuple, 0); 

如果您想要迭代通過一個foreach循環,您將使用類似於此:

foreach(KeyValuePair<Tuple<string, string>, int> kvp in stringDict) 
{ 
    Tuple<string, string> keyTuple = kvp.Key; 
    int tupleCount = kvp.Value; 
} 
+0

如果你這樣做,那麼「AA」和「B」將被視爲等於「A」和「AB」。 – Servy 2014-10-31 20:30:36

+0

怎麼樣? '「AA」+「B」=「AAB」'與「你好」+「世界」=「Hello World」相同嗎?我明白'tuple'可能會更好,但是字符串的添加會起作用。 – JRLambert 2014-10-31 20:35:57

+0

是,「AA」+「B」=「AAB」和「A」+「AB」=「AAB」*。您現在有兩對完全不同的字符串映射到同一個字典鍵。你應該看到兩個不同的對,每個都有一個計數,而不是一對有兩個計數,但你的代碼不會這樣做。 – Servy 2014-10-31 20:37:57

2

具有一對字符串映射到整數的詞典:

Dictionary<Tuple<string, string>, int> dictionary = ... 
+0

還不知道塗謝謝,謝謝! – Cornwell 2014-10-31 20:29:33

0

的溶液可以是使用一個散列映射。取兩個輸入,將它們轉換爲一個字符串,然後將它們存儲在散列映射中,將兩個輸入作爲鍵和計數器作爲值。