Вроде как бы всё правильно. И тестировала, всё хорошо. А валидатору опять не нравится :(
package com.javarush.task.task18.task1823;
import javax.sound.midi.Soundbank;
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
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 Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = "";
ReadThread readThread = null;
while (!(str = reader.readLine()).equals("exit")){
readThread = new ReadThread(str);
readThread.start();
}
//for (Map.Entry<String, Integer> m:
// resultMap.entrySet()) {
// System.out.println(m.getKey() + " " + m.getValue());
//}
reader.close();
}
public static class ReadThread extends Thread {
private String filename;
public ReadThread(String fileName) {
super(fileName);
this.filename = fileName;
}
@Override
public void run() {
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
byte[] bytes = new byte[inputStream.available()];
byte[] copyBytes = bytes.clone();
inputStream.read(bytes);
int count = 0;
int maxFrequency = 0;
byte maxB = bytes[0];
for (byte aByte : bytes) {
for (byte ba : copyBytes) {
if (aByte==ba) count++;
}
if (maxFrequency < count){
maxFrequency = count;
maxB = aByte;
}
count=0;
}
synchronized (resultMap) {
resultMap.put(filename, (int)maxB);
}
}catch (IOException e){}
try {
inputStream.close();
} catch (IOException e) {}
}
}
}