В программе ничего особенного нет, вот только почему-то она зависает на ровном месте. Где-то стопорится. Подскажите, где может быть ошибка.
Если String name заменить на File file, то программа пишет о каком-то неверном дескрипторе. Вообще без понятия, что это может быть (даже Гугл не помог).
Что насчет валидатора, то он написал Time out, программа работала слишком долго и была закрыта
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.File;
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 void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
FileInputStream inputStream = new FileInputStream(name);
ArrayList<Byte> arrayList = new ArrayList<>();
Map<Byte, Integer> map = new HashMap<>();
int av = inputStream.available();
int max = 0;
for (int i = 0; i < av; i++) {
byte readed = (byte)inputStream.read();
if (!map.containsKey(readed)) {
map.put(readed, 1);
}
else {
int newCount = map.get(readed) + 1;
map.replace(readed, newCount);
}
} //записал все в map в виде "Бит - количество"
for (byte i = 0; i < 256; i++) {
if (map.containsKey(i)) {
if (map.get(i) >= max) max = map.get(i);
}
} //узнаем наибольшее количество повторов
for (byte i = 0; i < 256; i++) {
if (map.containsKey(i)) {
if (map.get(i) == max) arrayList.add(i);
}
} //записываем в arrayList наиболее частые биты
for (int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i) + " ");
} //список вывожу в консоль
reader.close();
inputStream.close();
}
}