Вывод вроде нормальный. Запускал с разными файлами. и с повторениями и без правильный вывод. где может быть ошибка?
Постарался максимально прокомментить для лучшего понимания.
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Самые частые байты
*/
public class Solution {
public static ArrayList<Integer> list = new ArrayList<>();
public static HashMap<Integer, Integer> frequently = new HashMap<>();
public static HashMap<Integer, Integer> freq = new HashMap<>();
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); //читаем строку
String adress = reader.readLine();
reader.close();
FileInputStream fileRead = new FileInputStream(adress); //поток чтения из файла
while(fileRead.available() > 0){ //добавляем всё в лист
list.add(fileRead.read());
}
fileRead.close();
for (int i = 0; i < list.size(); i++) { //считаем количество раз, которое встречается каждый байт
freq.put(list.get(i), 1); //добавляем в мапу со значением 1(т.к. оно как минимум 1 раз есть)
for (int j = i; j < list.size() - 1; j++){ //поиск повторения, увеличение value при нахождении
if (list.get(j).equals(list.get(i+1))){
int value = freq.get(list.get(i));
freq.replace(list.get(i), ++value);
}
}
}
/* for (Map.Entry<Integer, Integer> entry: freq.entrySet()){ //для проверки. вывод всех значени мапы
System.out.println(entry.getKey() + " " + entry.getValue());
}*/
int max = -1;
int key;
for (Map.Entry<Integer, Integer> entry: freq.entrySet()) { //поиск максимального
if (entry.getValue() > max){ //если нашли, очищаем мапу, записываем новое значение
max = entry.getValue();
key = entry.getKey();
frequently.clear();
frequently.put(key, max);
} else if (entry.getValue() == max) {
frequently.put(entry.getKey(), entry.getValue());
}
}
for (Map.Entry<Integer, Integer> entry: frequently.entrySet()){ //вывод макс. через пробел
System.out.print(entry.getKey() + " ");
}
}
}