Есть много способов сделать это, позвольте мне объяснить вам способ, который одновременно эффективен и прост для понимания ... и, конечно, ОО.
[Шаг 1] У вас должно быть две карты однакоторый хранит данные, относящиеся к файлу, и другой файл, который хранит имя файла и данные файла.Вместо имени файла вы можете выбрать все, что захотите.
private static HashMap<String, MutableInt> wordMap1 = new HashMap<String, MutableInt>();
private static HashMap<String, MutableInt> wordMap2 = new HashMap<String, MutableInt>();
private static HashMap<String, HashMap> fileMap = new HashMap<String, HashMap>();
[Шаг 2] Создайте класс MutableInt (технически вы хотите сделать это первым) Теперь вы можете спросить, что такое MutableInt, это класс, который вы будете использоватьсоздайте, чтобы вы могли увеличивать значение для данного слова, когда встречаете его.
Вот пример класса MutableInt:
class MutableInt {
int value = 1;
public void increase () { ++value; }
public int getValue () { return value; }
public String toString(){
return Integer.toString(value);
}
}
[Шаг 3] Теперь для каждого слова вдля данного файла выполните следующее:
- создайте новую wordMap для файла, который вы анализируете
- получите слово из файла
- проверьте, есть ли слово в wordMap, используя wordmap.get ("word");
- если выходные данные равны нулю, то вы знаете, что это новое слово.
- поместите слово в карту и поместите MutableInt в его значение, используя
- wordmap.put ('word', new MutableInt ());
- , если output не равен нулю, то вы знаете, что это не новое слово, поэтому увеличьте счетчик, используя wordMap.getValue ("word).увеличения ();
- Как только вы закончите делать это со всеми словами в файлевы хотите поместить wordMap в fileMap, используя fileMap.put ("filename", wordMap);