До этого была подобная задача, сделал через ArrayList аналогичным образом. Здесь его нет в импорте, поэтому добавлял байты в массив.
package com.javarush.task.task18.task1823;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
/*
Нити и байты
*/
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s;
while(!((s = reader.readLine()).equals("exit"))) {
(new ReadThread(s)).start();
}
}
public static class ReadThread extends Thread {
String fileName;
public ReadThread(String fileName) {
//implement constructor body
super(fileName);
this.fileName = fileName;
}
// implement file reading here - реализуйте чтение из файла тут
public synchronized void run() {
try (FileInputStream fileIS = new FileInputStream(fileName);) {
byte[] buffer = new byte[fileIS.available()];
fileIS.read(buffer);
byte[] copy = new byte[buffer.length];
for(int i=0; i < buffer.length;i++) {
copy[i] = buffer[i];
}
int[] repeat = new int[buffer.length];
for(int i = 0; i < buffer.length; i++) {
int count = 0;
for(int j = 0; j < copy.length; i++) {
if(buffer[i] == copy[j]) {
count++;
}
}
repeat[i] = count;
}
int maxRepeat = repeat[0];
int maxRepeatIndex = 0;
for (int i = 0; i<repeat.length; i++) {
if (repeat[i] > maxRepeat) {
maxRepeat = repeat[i];
maxRepeatIndex = i;
}
}
int a = buffer[maxRepeatIndex];
resultMap.put(fileName, a);
}
catch(IOException e) {}
}
}
}