Самые частые байты

Задача:

Ввести с консоли имя файла.
Найти байт или байты с максимальным количеством повторов.
Вывести их на экран через пробел.
Закрыть поток ввода-вывода.

Требования:

  • Программа должна считывать имя файла с консоли.
  • Для чтения из файла используй поток FileInputStream.
  • В консоль через пробел должны выводиться все байты из файла с максимальным количеством повторов.
  • Данные в консоль должны выводится в одну строку.
  • Поток чтения из файла должен быть закрыт.

Решение:


import java.io.*;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
ArrayList< Integer > bytes = new ArrayList<>();
FileInputStream inputStream = new FileInputStream(file);
while(inputStream.available() > 0) {
bytes.add(inputStream.read());
}
int[] ttt = new int[255];
for(int i = 0; i < bytes.size(); i++) {
for(int j = i+1; j < bytes.size(); j++) {
if(bytes.get(i) == bytes.get(j)) {
ttt[bytes.get(i)]++;
}}}
int index = 0;
int coun = 0;
for(int i = 0; i < ttt.length; i++) {
if(coun < ttt[i]) {
coun = ttt[i];
index = i;
}}
System.out.print(index);
ttt[index] = 0;
for(int i = 0; i < ttt.length; i++) {
if(coun == ttt[i]) {
System.out.print(" " + i);
}}
reader.close();
inputStream.close();
}}