Вы не можете.Вам нужна структура данных, которая поддерживает подсчет ключей.Реализации карт этого не делают.
Гуава
Можно использовать только одну вещь: Гуава * Мультикарта
Пример кода:
final Multimap<String, Double> map =
Multimaps.newListMultimap(
Maps.<String, Collection<Double>>newTreeMap(),
new Supplier<List<Double>>(){
@Override
public List<Double> get() {
return Lists.newArrayList();
}});
map.put("ABS", Double.valueOf(3434.34));
map.put("ABD", Double.valueOf(123.22));
map.put("ABD", Double.valueOf(123.22));
map.put("ABD", Double.valueOf(123.22));
map.put("ABD", Double.valueOf(123.22));
for (final Multiset.Entry<String> key : map.keys().entrySet()) {
System.out.println(
"Key: "
+key.getElement()
+", count: "
+key.getCount()
+", values: "
+map.get(key.getElement())
);
}
Выход:
Ключ: ABD, счетчик: 4, значения: [123.22, 123.22, 123.22, 123.22]
Ключ: ABS, количество: 1, значения: [3434.34]
MultiMap в Apache Commons / Collections также поможет.
Обычная Java
Если вам не разрешено использовать внешнюю библиотеку, вы все равно можете реализовать эту функцию с помощью Map<String, List<Double>>
.Создайте метод, подобный этому
Метод помощника
public static <K, V> void assignValue(
final Map<K, Collection<V>> map, final K key, final V value) {
Collection<V> values = map.get(key);
if(values==null){
values=new ArrayList<V>();
map.put(key, values);
}
values.add(value);
}
Использование
И используйте его следующим образом:
final Map<String, Collection<Double>> map =
new HashMap<String, Collection<Double>>();
assignValue(map, "ABS", Double.valueOf(3434.34));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
assignValue(map, "ABD", Double.valueOf(123.22));
for(final Entry<String, Collection<Double>> entry : map.entrySet()){
System.out.println(new StringBuilder()
.append("Key: ")
.append(entry.getKey())
.append(", count: ")
.append(entry.getValue().size())
.append(", values: ")
.append(entry.getValue())
.toString());
}
Выход
Ключ: ABD, счет: 4, значения: [123.22, 123.22, 123.22, 123.22]
Ключ: ABS, счет:1, значения: [3434,34]