Ругается на то, что якобы один и тот же байт вывожу на консоль, но это не так.
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;
import java.util.List;
import java.util.Map;
/*
Самые частые байты
*/
public class Solution {
private static Map<Integer, Integer> bytes;
private static List<Integer> maxBytes = new ArrayList<>();
private static int maxByteCount= 0;
public static void main(String[] args) throws Exception {
bytes = new HashMap<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String path = reader.readLine();
reader.close();
FileInputStream file = new FileInputStream(path);
while (file.available() > 0) {
boolean isNotUsed = true;
int byteFromFile = file.read();
for (Map.Entry<Integer, Integer> entry : bytes.entrySet()) {
if (entry.getKey() == byteFromFile) {
entry.setValue(entry.getValue() + 1);
isNotUsed = false;
}
}
if (isNotUsed == true) {
bytes.put(byteFromFile, 1);
}
}
file.close();
findMaxByte();
for (int byteToString : maxBytes) {
System.out.print(byteToString + " ");
}
}
public static void findMaxByte() {
for (Map.Entry<Integer, Integer> entry : bytes.entrySet()) {
if (entry.getValue() > maxByteCount)
maxByteCount = entry.getValue();
}
for (Map.Entry<Integer, Integer> entry : bytes.entrySet()) {
if(entry.getValue() == maxByteCount)
maxBytes.add(entry.getKey());
}
}
}