Коллеги, очень рассчитываю на вашу помощь
package com.javarush.task.task18.task1803;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream inputStream = new FileInputStream(reader.readLine()); //считывание с файла
HashMap<Integer, Integer> bytes = new HashMap<Integer, Integer>();
ArrayList<Integer> bytess = new ArrayList<Integer>();
/* while (inputStream.available() > 0){
int value = inputStream.read();
int key = 0;
if(bytes.containsValue(value)) {
bytes.put(inputStream.read(), 1);
}
else{
bytes.put(inputStream.read(), -1);
}
}
inputStream.close();
for (int i = 0; i < bytes.size(); i++) {
}
*/
while(inputStream.available() > 0){ //до тех пор пока биты считываются с файла
bytess.add(inputStream.read()); //заполняется список
}
// for (int i = 0; i < bytess.size(); i++) {
// int b = bytess.get(i);
for (int j = 0; j < bytess.size(); j++) {
int b = bytess.get(j); // b - значение из списка в текуей итерации
if(bytes.containsKey(b)){ //если b есть в списке, то
int repeat = bytes.get(b) + 1; // repeat = value текущей позиции + 1
bytes.remove(b);// удаляется элемент с таким же ключом
bytes.put(b , repeat); // в мап добавляется новый элемент. Ключ - бит, кол-во повторений + 1
}
else{
bytes.put(b, 1); //иначе в мап добавляется ключ с одним повторением
}
}
Integer max = 0;
for(Integer tmp : bytes.values()){ //выясняю максимальное количество повторов
if(max < tmp){
max = tmp;
}
}
//В другом цикле ищем все ключи с максимальным значением и выводим их через пробел.
for(Integer tmp : bytes.values()){
if(bytes.get(tmp) == max){ //если значение из values == max, то...
System.out.print(tmp + " ");
}
}
// bytes.put(bytess.get(i), 1);
// }
reader.close();
inputStream.close();
}
}