Еле дошел до этого варианта, а тут уже результат не понятен при запуске программы.
Проверка equals() не проходит, точнее как-то странно проходит. на Кириллице , практически от любых значений false даже если 2 слова одинаковы, если ввод с клавиатуры латиницей, то такое ощущение что идет сравнение длинны строки. (тестил в IDE).
По идее, значения Key в МАР все должны заполнится из АррайЛиста в кол-ве 20 шт. А после пускаю проверку на соответствие, и в зависимости от результата изменяю значение Value в МАР.
Но чтото идет не так.
public static Map<String, Integer> countWords(ArrayList<String> list) {
HashMap<String, Integer> result = new HashMap<String, Integer>();
int check = 1, round=0;
for (String x : list){
result.put(x,check); // Заношу в Мар в значения Key данные из ArrayList'a , Значения Value делаю 1
}
for (Map.Entry<String,Integer> map : result.entrySet()){
if (map.getKey().equals(list.get(round))){ // проверка строк в ключах Мар и в АррайЛисте
map.setValue(check+1); // значения Value меняем , если сравнение положительно
}
round++; // это счетчик для АррайЛист, не соображу как сделать через цикл в этом коде.
}
return result;
}package com.javarush.task.task10.task1016;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Одинаковые слова в списке
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> words = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
words.add(reader.readLine());
}
Map<String, Integer> map = countWords(words);
for (Map.Entry<String, Integer> pair : map.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
}
public static Map<String, Integer> countWords(ArrayList<String> list) {
HashMap<String, Integer> result = new HashMap<String, Integer>();
//напишите тут ваш код
int check = 1, round=0;
//напишите тут ваш код
for (String x : list){
result.put(x,check);
}
for (Map.Entry<String,Integer> map : result.entrySet()){
if (map.getKey().equals(list.get(round))){
map.setValue(check+1);
}
round++;
}
return result;
}
}