в коде выводит через пробел все байты которые максимально часто были встречены на своем примере вся карта имеет вывод в консоле (key-значение байтов ; value-сколько раз встретился )
Sout(map)- {101=8, 102=8, 103=14, 105=14, 10=15, 108=8, 13=15, 110=14, 49=8, 114=14, 50=14, 115=14, 51=1, 116=14}
байты 10 и 13 встречаются по 15 раз- они же и выводятся .
что не так ?
package com.javarush.task.task18.task1803;
import java.io.*;
import java.util.*;
/*
Самые частые байты
*/
public class Solution {
public static void main(String[] args) throws IOException {
//для хранения значений байтов и их повторов нам нужен map где значение байтов-key , а повторов-value
HashMap<Integer,Integer>map=new HashMap<>();
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String s=bf.readLine();
FileInputStream fileInputStream=new FileInputStream(s);
int count=1;//каждое значение имеет счетчик 1(количество таких значений) -само себя
//available-метод возвращает количество непрочитанных байтов
while (fileInputStream.available()>0) {
//метод read()-метод читает один байт из файла и возвращает его как результат. Тип результата
//расширяется до int.
int a = fileInputStream.read();
//перебор map для поиска похожих значений и внесение их map
for (Integer i : map.keySet()) {// ИТЕРАЦИЯ-перебераем каждое значение по уникальным значениям так как они единичны, а value-будет перезаписываться
if (map.containsKey(a)) {//если какое то значение похоже на считываемое то увеличиваем счетчки на 1
count++;
}
}
map.put(a, count);//-записываем уникальное значение и число повторений
count = 1;//-необходимо сбросить счетчик чтобы он начал отсчет для другого значения
}
//поток нам больше не нужен, закрываем его
fileInputStream.close();
//для сортировки методом Collection.sort нам необходимо value внести в список и отсортировать по возрастанию( для простоты)
List<Integer> list = new ArrayList<Integer>(map.values());
List<Integer> listkey = new ArrayList<Integer>(map.keySet());
Collections.sort(list);
//смтрим списрк
// System.out.println(list);
//смотрим максимальное число повторений
//System.out.println(list.get(list.size()-1));
//После чего пробегитесь по элементам и выведите те,
// у которых записанное в HashMap количество повторов равно найденному максимуму.
//Map.Entry<K, V>> entrySet(): возвращает набор элементов коллекции.
// Все элементы представляют объект Map.Entry
for (Map.Entry pair:map.entrySet()) {
//если из всех значений есть значение (list.get(list.size()-1) т.е макс из списка
if(pair.getValue()==list.get(list.size()-1)){
//то будет выводится
System.out.print(pair.getKey()+" ");
}
}
//проверка-какие байты повторяются n-число раз
System.out.println(map);
}
}