Всем привет, значит смотрел подсказки и все пишут, что hashmap отсортировать нельзя, так как мне было лениво переписывать Hashmap на что-то другое, я нашёл сортировку на Stackoverflow, но букву ё она игнорит, как быть? Hashmap полагаю не подходит? надо чтобы всё было занесено сразу в правильном порядке? Наставьте на путь истинный...
package com.javarush.task.task10.task1012;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
/*
Количество букв
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// алфавит
String abc = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
char[] abcArray = abc.toCharArray();
ArrayList<Character> alphabet = new ArrayList<Character>();
for (int i = 0; i < abcArray.length; i++) {
alphabet.add(abcArray[i]);
}
// ввод строк
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
String s = reader.readLine();
list.add(s.toLowerCase());
}
// Хранилище алфавита для подсчёта по совпадениям
HashMap<Character, Integer> abcHash = new HashMap<Character, Integer>();
for(int i = 0; i < alphabet.size(); i++){
abcHash.put(alphabet.get(i), 0);
}
// Конвертация введённых строк в символы
ArrayList<Character> enteredWords = new ArrayList<Character>();
for(int i = 0; i < list.size(); i++) {
char[] ew = list.get(i).toCharArray();
for(int z = 0; z < ew.length; z++){
enteredWords.add(ew[z]);
}
}
// Тут проверка на совпадение и инкрементация
for(int i = 0; i < enteredWords.size(); i++){
if(alphabet.contains(enteredWords.get(i))){
Integer c = abcHash.get(enteredWords.get(i)); // Вот это тоже не особо понял
abcHash.replace(enteredWords.get(i), c + 1);
}
}
// Ворованный вывод
abcHash.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.forEach(e -> System.out.println(e.getKey() + " " + e.getValue()));
}
}