Простой способ собрать статистику с помощью Dictionary
От: dims12 http://www.relativity.ru
Дата: 17.09.10 13:50
Оценка:
Допустим, я читаю файл и подсчитываю статистику встречающихся там слов при помощи Dictionary<string,int>. Как мне это сделать наиболее правильно? Если определить словарь в вышеописанном типе, то приходится осуществлять поиск дважды, например, первый раз при проверке есть ли слово в словаре, а второй раз -- при увеличении счётчика слова на единицу.

Можно хранить в качестве значения простейший класс

class Wrapper {
int count;
public Wrapper(int count) { this.count = count; }
}

и тогда можно будет делать так

Dicntionary<string,Wrapper> dict = new Dictionary<string,Wrapper>();
Wrapper wrapper;

if( dict.TryGetValue(word, out wrapper) ) {
wrapper.count++;
}
else {
dict.Add(word, new Wrapper(1));
}

Но всё равно при добавлении слова поиск будет производиться дважды, а сам класс Wrapper уж какой-то сложный.

Нельзя ли как-то обойтись без Wrapper-а, например, при помощи типа типа (int?) (только этот тип не ссылочный).
И нельзя ли как-то сделать доабавление за один поиск?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.