Задачу решил (кто не решил пропускайте, мне больше писать некуда, в разделе "обсуждение" никто не отвечает)
Как его оптимизировать? Я чувствую, что слишком много циклов делаю. Думаю, что можно при помощи первого FOREACH можно уже все сделать, но не могу догадаться как. Помогите, пожалуйста
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream(args[0]);
Map<Integer,Integer> map = new HashMap<>();
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
while (fileInputStream.available()>0){
int p = fileInputStream.read();
if (map.containsKey(p)){
map.put(p,map.get(p) + 1);
}
else
map.put(p,1);
}
fileInputStream.close();
int min = Integer.MAX_VALUE;
for (Map.Entry<Integer, Integer> pair1: map.entrySet()) {
list1.add(pair1.getKey());
list2.add(pair1.getValue());
}
for (int i = 0; i < list1.size(); i++) {
for (int j = i; j < list1.size(); j++) {
if (list1.get(j)<list1.get(i)){
int m = list1.get(i);
list1.set(i,list1.get(j));
list1.set(j,m);
int t = list2.get(i);
list2.set(i,list2.get(j));
list2.set(j,t);
}
}
}
for (int i = 0; i < list1.size() ; i++) {
int ft = list1.get(i);
char tf = (char) ft;
System.out.println(tf + " " + list2.get(i));
}
}
}