Еле дошел до этого варианта, а тут уже результат не понятен при запуске программы. Проверка equals() не проходит, точнее как-то странно проходит. на Кириллице , практически от любых значений false даже если 2 слова одинаковы, если ввод с клавиатуры латиницей, то такое ощущение что идет сравнение длинны строки. (тестил в IDE). По идее, значения Key в МАР все должны заполнится из АррайЛиста в кол-ве 20 шт. А после пускаю проверку на соответствие, и в зависимости от результата изменяю значение Value в МАР. Но чтото идет не так.
public static Map<String, Integer> countWords(ArrayList<String> list) {
        HashMap<String, Integer> result = new HashMap<String, Integer>();
        int check = 1, round=0;
        for (String x : list){
            result.put(x,check); // Заношу в Мар в значения Key данные из ArrayList'a , Значения Value делаю 1
        }
        for (Map.Entry<String,Integer> map : result.entrySet()){
             if (map.getKey().equals(list.get(round))){  // проверка строк в ключах Мар и в АррайЛисте
                map.setValue(check+1); // значения Value меняем , если сравнение положительно
            }
         round++; // это счетчик для АррайЛист, не соображу как сделать через цикл в этом коде.
        }
        return result;
    }