Логика решения простая.
Считываем файл, каждый байт добавляем в арейлист. Каждый уникальный байт добавляем множество сет. Множество сет переделываем в массив, по сути в нем только уникальные байты из считанного файла.
В цикле проверяем как часто встречается каждый байт, и находим наибольшую частоту встречаемости.
В следующем цикле проверяем частоту встречаемости каждого байта, и если она равна максимальной то такой байт добавляем в результирующий массив сет.
Результат выводим все элементы результирующего массива сет. Где ошибка? не пойму
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fIS=new FileInputStream(reader.readLine());
ArrayList<Byte> integers = new ArrayList<>();
HashSet<Byte> hashSet = new HashSet<>();
while (fIS.available()>0){
integers.add((byte)fIS.read());
hashSet.add((byte)fIS.read());
}
Byte[] m = {};
m = hashSet.toArray(new Byte[hashSet.size()]);
int max1, max2 = 0;
for (int i=0; i<m.length; i++){
max1=Collections.frequency(integers,m[i]);
if(max1>max2){
max2=max1;
}
}
HashSet<Byte> result = new HashSet<>();
for(int i=0; i<integers.size();i++){
if (Collections.frequency(integers,integers.get(i))==max2){
result.add(integers.get(i));
}
}
Iterator<Byte> iterator = result.iterator();
while (iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
reader.close();
fIS.close();
}
}