С большим трудом сделал, написал, работает...да, скорее всего "г" но сам же...один пункт не принимает, через мапу что-то не получилось, может тут как раз намек на мапу, но ведь...работает, подскажите что не так с моей чудо-программой, имеет ли смысл ее с нуля переделать под мапу или нет?
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.Collections;
import java.util.HashMap;
import java.util.function.Function;
import java.util.stream.Collectors;
/*
Самые частые байты
Ввести с консоли имя файла.
Найти байт или байты с максимальным количеством повторов.
Вывести их на экран через пробел.
Закрыть поток ввода-вывода.
Requirements:
1. Программа должна считывать имя файла с консоли.
2. Для чтения из файла используй поток FileInputStream.
3. В консоль через пробел должны выводиться все байты из файла с максимальным количеством повторов.
4. Данные в консоль должны выводится в одну строку.
5. Поток чтения из файла должен быть закрыт.
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fileInputStream = new FileInputStream(bufferedReader.readLine());
ArrayList<Integer> arr = new ArrayList<>();
ArrayList<Integer> arr1 = new ArrayList<>();
while (fileInputStream.available() > 0){
int i = fileInputStream.read();
arr.add(i);
}
for (int i = 0; i < arr.size(); i++) {
int a = Collections.frequency(arr,arr.get(i));
arr1.add(a);
}
int maxValue = Collections.max(arr1);
for (int i = 0; i < arr.size(); i++) {
int a = Collections.frequency(arr,arr.get(i));
if (a == maxValue){
System.out.print(arr.get(i) + " ");
}
}
bufferedReader.close();
fileInputStream.close();
}
}