извиняюсь за глупый вопрос, правильно ли я написал сортировку по ASCII, и где у меня ошибка? Подскажите в каком направлении думать. спасибо
package com.javarush.task.task18.task1821;
import java.io.FileReader;
import java.io.IOException;
import java.io.*;
import java.util.*;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) throws IOException {
// FileInputStream ascii=new FileInputStream(args[0]);//поток считывает байты из параметра args[0]
FileReader fileReader=new FileReader(args[0]);//поток считывает символы из параметра args[0]
BufferedReader bf=new BufferedReader(fileReader);//создаем буфер для чтения даннхы из файла
HashMap<Character, Integer> map=new HashMap<>();//создаем коллекцию для хранения символов и количества их повторов
while (bf.ready()) {//пока в буфере есть данные для чтения
char[] symbol = bf.readLine().toCharArray();//кажду строку дробим на символы и помещаем в массив
for (char i : symbol) {
if (!map.containsKey(i))
map.put(i, 1);//счетчик для символов и количества повторений
else {
int value = map.get(i);//get-возвращает значение объекта, ключ которого равен b
//Чтобы положить объект в коллекцию, используется метод put,
// а чтобы получить по ключу - метод get.
map.put(i, value + 1);//счетчик для символов и количества повторений
}
}
}
List<Integer> listvalue = new ArrayList<Integer>(map.values());
List<Character> listkey = new ArrayList<Character>(map.keySet());
//сортировка по возрастанию кода ASCII
for (int i = 0; i <listkey.size() ; i++) {
for (int j = listkey.size()-1; j >=i ; j--) {
if ((int)listkey.get(j)<(int)listkey.get(j-1)){
int middle=(int)listkey.get(j);
listkey.set(j, listkey.get(j-1));
listkey.set(j-1,(char) middle);
}
}
}
//Collections.sort(listkey);
fileReader.close();//закрываем поток считывания
for (Character character: listkey){
System.out.println(character+" "+map.get(character));
}
}
}