На данный вопрос уже ответили:
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>();
for (String word: list)
result.put(word, result.containsKey(word) ? result.get(word) + 1: 1);
}
расшифруйте, пожалуйста, вот эту строку:
result.put(word, result.containsKey(word) ? result.get(word) + 1: 1);
result.put(word , result.containsKey(word) ? result.get(word) + 1: 1);
тут word - это твой ключ, а значение которое ему присвоится расшифровывается вот так
if (result.containsKey(word)){
// значение будет
result = result.get(word) + 1;
else{
result = 1;
}
Такая конструкция называется одностроковое условие
result.containsKey(word) ? result.get(word) + 1 : 1
создается с помощью оператора ?
вот пример:
условие ? значение1 : значение2
Это тернарный оператор
если result.containsKey(word) = true, то результат равен result.get(word) + 1, в обратном случае 1.
result - это словарь, где ключ word, а значение кол-во таких слов на текущий момент. в строчке
result.put(word , result.containsKey(word) ? result.get(word) + 1: 1);
мы апдейтим значение для ключа word. Если result.containsKey(word), тогда пишем "уже подсчитанное кол-во слов" + 1, если такого слова еще не было, то проставлем ему единицу. В конце цикла подсчитаем кол-во для каждого слова в списке (который подается на вход метода).
Продвижение своими сайтами как стратегия роста и независимости