Может не самое правильное решение задачи, но вывод правильный. Вручную проверил, повторений по байтам нет.
Что посоветуете?![]()

package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.nio.Buffer;
import java.security.KeyStore;
import java.util.*;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream inp = new FileInputStream(reader.readLine());
ArrayList<Integer> bytes = new ArrayList<Integer>();
HashMap<Integer, Integer> ByMap = new HashMap<Integer, Integer>();
while (inp.available() > 0) {
int data = inp.read();
bytes.add(data);
}
Collections.sort(bytes);
int count = 0;
for (int i = 0; i < bytes.size() - 1; i++) {
if (bytes.get(i) == bytes.get(i + 1)) count++;
else {
ByMap.put(bytes.get(i), count);
count = 0;
}
}
int max = -1;
count = 0;
while (ByMap.size() != count) {
if (max == -1) {
for (Map.Entry<Integer, Integer> pair : ByMap.entrySet()) {
if (max == -1) max = pair.getValue();
else {
if (max <= pair.getValue()) {
max = pair.getValue();
//System.out.println(pair.getKey() + " " + pair.getValue());
}
}
}
}
else {
for (Map.Entry<Integer, Integer> pair : ByMap.entrySet()) {
if (max == pair.getValue()) {
System.out.print(pair.getKey() + " " + pair.getValue() + " ");
ByMap.put(pair.getKey(), -1);
count++;
}
}
max = -1;
}
}
//System.out.println(ByMap);
inp.close();
reader.close();
}
}