Jeżeli komuś uda się to zwięźle i prosto wytłumaczyć, będę bardzo wdzięczny :)
package pl.codegym.task.task18.task1804;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/*
Najrzadziej występujące bajty
*/
public class Solution {
public static void main(String[] args) throws Exception {
Map<Integer, Integer> mapa = new HashMap<>();
ArrayList<Integer> lista = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream inputStream = new FileInputStream(reader.readLine());
reader.close();
int temp = inputStream.read();
while (inputStream.available() > 0){
if(!lista.contains(temp)){
mapa.put(temp,1);
lista.add(temp);}
else{
mapa.put(temp, (mapa.get(temp) + 1));
}
temp = inputStream.read();
}
inputStream.close();
int res = Collections.min(mapa.values());
for (Map.Entry<Integer, Integer> pair : mapa.entrySet()) {
if (pair.getValue() == res)
System.out.print(pair.getKey() + " ");
}
}
}