Мой вариант решения задачи не проходит, потому что при изменении копии массива оригинал массива тоже меняется таким же способом! Это вне логики, почему Java тут так работает? Понятно, что я могу все поправить, чтобы работало, но интересно, почему так? public static Map<String, Integer> countWords(ArrayList<String> list) { HashMap<String, Integer> result = new HashMap<String, Integer>(); //напишите тут ваш код ArrayList<String> copy=list; for (int i = 0; i < 20; i++) { int count=0; for (int k = 0; k < 20; k++) if (list.get(i).equals(copy.get(k))) { count++; copy.set(k,"");} if (count>0) result.put(list.get(i),count); } return result; }