Задачу я решил по аналогии с собственным решением подобных задач в прошлом: 1)создал динамический массив 2) создал map 2)считал символы из файла 3) записал эти символы в динамический массив 4) а дальше вот такой фрагмент: for (Integer integer : list1) { if (map.containsKey(integer)) { map.put(integer, map.get(integer)+1); } else map.put(integer, 1); } и вот тут я затупил. Почему так? Вроде бы бы с помощью цикла Foreach проверяем, содержит ли наш map элементы списка list1 в качестве ключей. Вопрос: на каком этапе заполняется map? Код целиком: public class Solution { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<>(); TreeMap<Integer, Integer> map = new TreeMap<>(); if (args.length != 0) { try { FileInputStream fis = new FileInputStream(args[0]); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); while (br.ready()) { int c = br.read(); list1.add(c); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } for (Integer integer : list1) { if (map.containsKey(integer)) { map.put(integer, map.get(integer)+1); } else map.put(integer, 1); } for (Map.Entry entry : map.entrySet()) { int x = (int)entry.getKey(); System.out.println((char)x + " " + entry.getValue()); } } }