У вас есть HashMap, переводящий String
к ArrayList<String>
.
Выполнение put("001", "DM")
на этой карте не будет работать, как указано в комментариях от @Sotirios Delimanolis.
Вы можете получить ошибку, которая выглядит как:
The method put(String, ArrayList<String>) in the type HashMap<String,ArrayList<String>> is not applicable for the arguments (String, String)
Основываясь на вашем примере поведения, вы хотите HashMap
, который отображает String
на String
(т.е. put("001", "DM");
Теперь, если у вас есть что:
HashMap<String, String> varX = new HashMap<String, String>();
И вы хотите сосчитать , сколько ключей указано на карте такое же значение, вот как вы можете сделать это:
varX.put("001", "DM");
varX.put("010", "DM");
// ...
int counter = 0;
String countingFor = "DM";
for(String key : varX.keySet()) { // iterate through all the keys in this HashMap
if(varX.get(key).equals(countingFor)) { // if a key maps to the string you need, increment the counter
counter++;
}
}
System.out.println(countingFor + ":" + counter); // would print out "DM:2"
Вы не можете 'ставить ("001", "DM");'. '' DM "' не является 'ArrayList'. Что вы на самом деле имеете в виду? –
Вы можете использовать второй HashMap для подсчета? – Compass
Вы должны определенно проверить [Guava Multimap] (https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained#Multimap). Он хранит «Collection» в качестве значения, но вам не нужно об этом заботиться. Вы можете просто написать 'multiMap.put (« DM »,« 123 »);'. И помните, что вы должны переключить свой * ключ * и * значение *. 'DM' должен быть * ключ *. – Tom