Поставь = новый HashSet (список);
и
Collections.frequency (список, ключ);
слишком много накладных расходов.
Вот как я бы это сделать
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
Map<String, Integer> countMap = new HashMap<>();
for (String word : list) {
Integer count = countMap.get(word);
if(count == null) {
count = 0;
}
countMap.put(word, (count.intValue()+1));
}
System.out.println(countMap.toString());
Выход
{aaa=2, bbb=1}
EDIT выход один на один: итерации по множеству записей на карте
for(Entry<String, Integer> entry : countMap.entrySet()) {
System.out.println("frequency of '" + entry.getKey() + "' is "
+ entry.getValue());
}
Выход
frequency of 'aaa' is 2
frequency of 'bbb' is 1
EDIT 2 Нет необходимости зацикливания
String word = null;
Integer frequency = null;
word = "aaa";
frequency = countMap.get(word);
System.out.println("frequency of '" + word + "' is " +
(frequency == null ? 0 : frequency.intValue()));
word = "bbb";
frequency = countMap.get(word);
System.out.println("frequency of '" + word + "' is " +
(frequency == null ? 0 : frequency.intValue()));
word = "foo";
frequency = countMap.get(word);
System.out.println("frequency of '" + word + "' is " +
(frequency == null ? 0 : frequency.intValue()));
Выходной
frequency of 'aaa' is 2
frequency of 'bbb' is 1
frequency of 'foo' is 0
Обратите внимание, что вы всегда будете иметь коллекцию, и вы должны экстракт в считать от него за год так или иначе.
Может быть, температура переменная – Hydroid