我有一个如下所示的哈希映射:
HashMap<String, ArrayList<String>> varX = new HashMap<String, ArrayList<String>>();
我不能为我的生活弄清楚如何计算重复值的数量。
例如,如果put("001", "DM");
进入哈希映射和put("010", "DM");
,那么如果在Hashmap的ArrayList部分中有两个值,如何计算。
例如,输出看起来像这样:
DM:2
因为我将'两个DM值放入Hashmap。
答案 0 :(得分:2)
您有一个将String
映射到ArrayList<String>
的HashMap。
在此地图上执行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"
答案 1 :(得分:0)
正如Sotirios所说,你只能放一个ArrayList。
ArrayList<String> names= new ArrayList<String>();
names.add("Josh");
put("001", names);
如果要将字符串插入HashMap,请将其定义如下:
Map<String,String> example = new HashMap<String,String>();
example.put( "001", new String( "Rooney" ));
此致
答案 2 :(得分:0)
Collections.frequency(map, "value");
用于计算集合中传递的对象。
以下是该方法的声明:
public static int frequency(Collection<?> c, Object o)
答案 3 :(得分:0)
HashMap hm =new HashMap();
hm.put("01","one");
hm.put("02","two");
hm.put("03","one");
hm.put("04","one");
hm.put("05","two");
HashMap newHm = new HashMap();
Iterator it = hm.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
if(newHm.containsKey(pair.getValue())){
newHm.put(pair.getValue(), Integer.parseInt(newHm.get(pair.getValue()).toString())+1 );
}else{
newHm.put(pair.getValue(),1 );
}
it.remove(); // avoids a ConcurrentModificationException
}