Доброго времени суток, ребята!
Количество букв
Ввести с клавиатуры 10 строчек и подсчитать в них количество различных букв (для 33 букв алфавита). Результат вывести на экран в алфавитном порядке.
Задача почти решена:
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());
}
TreeMap<Character,Integer> map=new TreeMap<Character,Integer>();
for (Character x:alphabet)
map.put(x,0);
Iterator<Map.Entry<Character,Integer>> iter=map.entrySet().iterator();
//Map.Entry<Character, Integer> pair=iter.next();
for (int i=0;i<list.size();i++) {
for (char ch:list.get(i).toCharArray()) {
if (ch >= 'а' && ch <= 'я') {
for (Map.Entry<Character, Integer> pair : map.entrySet())
if (pair.getKey().equals(ch)) map.put(pair.getKey(), pair.getValue() + 1);
}
}
}
for (Map.Entry<Character,Integer> pair:map.entrySet())
System.out.println(pair.getKey()+" "+pair.getValue());
}
}
Подскажите пожалуйста когда в строке ! if (pair.getKey().equals(ch)) map.put(pair.getKey(),pair.getValue()+1);" (стр 28-29) мы увеличиваем значение на 1, HashMap заново перезаписывает найденную пару Ключ-Значение, или просто меняет значение у найденного ключа на новое?
Если он не заново перезаписывает пару Ключ-Значение, а просто меняет значение, то почему вывод идёт не в алфавитном порядке, я ведь ключи записывал в алфавитном порядке (стр. 22-23)?
Как сделать так, чтобы вывод был в алфавитном порядке?package com.javarush.task.task10.task1012;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Количество букв
*/
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> map=new HashMap<Character,Integer>();
for (Character x:alphabet)
map.put(x,0);
Iterator<Map.Entry<Character,Integer>> iter=map.entrySet().iterator();
for (int i=0;i<list.size();i++) {
for (char ch:list.get(i).toCharArray())
for(Map.Entry<Character,Integer> pair:map.entrySet())
if (pair.getKey().equals(ch)) map.put(pair.getKey(),pair.getValue()+1);
}
for (Map.Entry<Character,Integer> pair:map.entrySet())
System.out.println(pair.getKey()+" "+pair.getValue());
}
}