Java "Подсчёт слов" с помощью hashmap - и определение максимального элемента по значению - поиск максимума

В примере ниже мы используем HashMap для подсчёта "слов" ,которые в данном случае поступают из коллекции ("массив"):

Map< String, Integer > map = new HashMap < String, Integer >(); // для подсчёта вхождений
	
	Map.Entry< String, Intege > maxEntry = null; // будет хранить слово с максимальным числом вхождений

		
		// "Подсчёт слов" с помощью hashmap 
		for (Text val : values) { // обходим некоторую коллекцию
			 if (map.containsKey(val)) { // если "слово" уже есть 
				 map.put(val.toString() , (Integer) (map.get(val) + 1)); // наращиваем счётчик для данного слова
			 } else {// если такое слово не известно
				 map.put(val.toString(), (Integer) (1)); // добавляем в индекс со значением = 1
			 }
	    }
		 				 
	   // обойдём коллекцию и найдём максимальное значение
		for (Map.Entry< String, Integer > entry : map.entrySet())
		{
		    // если максимум не определен или очередное значение ещё больше
			if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0)
		    {
		        maxEntry = entry; // то присваем максимуму новое значение
		    }
		} // после завершения цикла в   maxEntry лежит элемент с максиальным value (значением)