Самые редкие байты Ввести с консоли имя файла. Найти байт или байты с минимальным количеством повторов. Вывести их на экран через пробел. Закрыть поток ввода-вывода. Требования: 1. Программа должна считывать имя файла с консоли. 2. Для чтения из файла используй поток FileInputStream. 3. В консоль через пробел должны выводиться все байты из файла с минимальным количеством повторов. 4. Данные в консоль должны выводится в одну строку. 5. Поток чтения из файла должен быть закрыт.
package com.javarush.task.task18.task1804;

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 br = new BufferedReader(new InputStreamReader(System.in));
        FileInputStream fis = new FileInputStream(br.readLine());
        List<Integer> list = new ArrayList<>();
        HashMap<Integer, Integer> map = new HashMap<>();

        while (fis.available() > 0) {
            list.add(fis.read());
        }

        for (int i = 0 ; i < list.size(); i++) {
            int data = Collections.frequency(list, i);
            if (data == 0) {
                map.put(list.get(i), data);
            }
        }

        for (Map.Entry<Integer, Integer> pair : map.entrySet()) {
            System.out.print(pair.getKey() + " ");
        }

        br.close();
        fis.close();

    }
}