Пытаюсь решить с помощью коллекции и цикла for-each. Две переменные int. Одна для подсчёта того, сколько раз встречался байт, другая для самого байта. В цикле обновляю переменную с байтом, если есть байт, который встречался чаще. Не могу понять где ошибка.
package com.javarush.task.task18.task1823;
import java.io.*;
import java.util.*;
/*
Нити и байты
*/
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<>();
public static void main(String[] args) throws Exception {
while (true) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String myString = reader.readLine();
if (!myString.equals("exit")) {
ReadThread readThread = new ReadThread(myString);
readThread.start();
} else {
reader.close();
break;
}
}
}
public static class ReadThread extends Thread {
FileInputStream fis;
String fileName;
public ReadThread(String fileName) throws Exception {
this.fis = new FileInputStream(fileName);
this.fileName = fileName;
}
@Override
public void run() {
try {
Map<Integer, Integer> myMap = new HashMap<>();
int intOne = 1;
while (fis.available() > 0) {
int nextByte = fis.read();
if (!myMap.containsKey(nextByte)) {
myMap.put(nextByte, intOne);
} else {
myMap.put(nextByte, myMap.get(nextByte) + 1);
}
fis.close();
int max = 0;
int finalMax = 0;
for (Map.Entry<Integer, Integer> pair: myMap.entrySet()){
if (pair.getValue() > max){
max = pair.getValue();
finalMax = pair.getKey();
}
}
synchronized (Solution.class){
resultMap.put(fileName, finalMax);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}