мне непонятно, но я предполагаю, что ваши "два документа" относятся к Документу A , содержащему все возможные термины, из которых вы не интересуетесь его количеством событий, и Документ B , содержащий некоторые или все условия, в которых вы заинтересованы в количестве случаев, при условии, что они также указаны в Документе A.
Я не уверенчто это то, что вы хотите, но это мое лучшее предположение из того, как вы сформулировали свой вопрос.
Конечным результатом может быть карта (TreeMap, если вы предпочитаете), где строка - это слово, и целое числоэто число вхождений.
, поэтому вы сначала прочитаете Документ A, набрав map.put(word, 0);
для каждого слова.каждое дублированное слово заменит существующую запись на карте.Сначала вы можете проверить существование, но я не думаю, что это сильно повлияет на производительность.
вы завершили шаги 1 и 2.
теперь вам нужно прочитатьваш документ B и для каждого слова:
- проверьте его наличие на карте
- , если оно существует, увеличьте значение
, то есть: if map.containsKey(word) map.put(word, map.get(word) + 1)
теперь вы выполнили шаг 3 и у вас есть карта, содержащая только слова, содержащиеся в документе A, и количество их встреч в документе B.
Если я неправильно понял ваши требования, яуверен, что вы можете адаптировать его для соответствия.
РЕДАКТИРОВАТЬ
если вы просто хотите посчитать слова в одном документе, псевдокод становится:
for (word)
if (map.containsKey(word))
map.put(word, map.get(word) + 1)
else
map.put(word, 1)
то есть каждое слово, которое вы ударили, увеличивает его счет на единицу.если слово не было найдено до того, как вы инициализировали его на своей карте одним из них.
В конце этого процесса у вас есть карта, содержащая каждое слово в документе и счетчик его вхождений.