所以我一直在尝试编写一个接受HashMap的方法,并计算HashMap中有多少相同的键。所以这是代码,它应该是非常自我解释的。
import java.util.HashMap;
import java.util.Map;
public class ExtendedHashMap extends HashMap<String, Integer> {
public ExtendedHashMap() {
super();
}
public int keyCount(String keyString) {
String key = keyString;
int keyCountInt = 0;
for(Map.Entry<String, Integer> entry : this.entrySet()) {
if(entry.getKey() == keyString) {
keyCountInt++;
}
}
return keyCountInt;
}
public static void main(String[] args) {
ExtendedHashMap ex = new ExtendedHashMap();
ex.put("Item One", 5);
ex.put("Item Three", 25);
ex.put("Item Four", 35);
ex.put("Item Two", 15);
ex.put("Item One", 5);
ex.put("Item Two", 15);
ex.put("Item Three", 25);
ex.put("Item Four", 35);
System.out.println(ex.keyCount("Item One"));
}
}
如果你运行它,你会看到无论如何输出一个。 如果你注意到,键只有一个值,所以它排除了这一点。我怎样才能按原样输出值?
答案 0 :(得分:2)
HashMap中不允许重复键。所以很明显,你只会得到一个作为答案!
只是为了记录,当您使用相同的键添加两个不同的值时,您将不会获得任何Excpetion。您的原始值将默默地被新值替换。尝试做
ex.get("Item One");
您可能希望在Multimap上执行相同的操作。
答案 1 :(得分:1)
计算HashMap中有多少相同的键。
所有地图中的键都是唯一的。如果地图中的关键字计数将始终为 ONE 首先通过MAP的API。
地图不能包含重复的键;每个键最多可映射一个 值。
同样Map.html#entrySet()会返回一个java.util.Set
类,该类不能包含任何重复元素。
答案 2 :(得分:1)
HashMap
是一个键值对数据结构。而key
是独一无二的。所以答案是一个。
答案 3 :(得分:1)
我强烈建议你包装一个集合而不是扩展它。
这与
相同public int keyCount(String keyString) {
return containsKey(keyString) ? 1 : 0;
}
也许您考虑过MultiMap?
public int keyCount(String keyString) {
Collection coll = multiMap.get(keyString)
return coll == null ? 0 : coll.size();
}
但是我怀疑MultiSet是你真正想要的
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class Inventory {
private final Multiset<String> countingSet = ConcurrentHashMultiset.create();
public void add(String key, int count) {
countingSet.add(key, count);
}
public int keyCount(String keyString) {
return countingSet.count(keyString);
}
public static void main(String[] args) {
Inventory ex = new Inventory();
ex.add("Item One", 5);
ex.add("Item Three", 25);
ex.add("Item Four", 35);
ex.add("Item Two", 15);
ex.add("Item One", 5);
ex.add("Item Two", 15);
ex.add("Item Three", 25);
ex.add("Item Four", 35);
System.out.println(ex.keyCount("Wooden Sword"));
System.out.println(ex.keyCount("Item Three"));
}
}
打印
0
50