您好我在两个键相等时修改哈希表中的某个值时出现问题。
我定义了哈希表,
Hashtable<String, Integer> hash = new Hashtable<String, Integer>();
我的程序使用.put()
方法填充了一些数据。
注意:第一列代表十六进制值
08 86
AA 10
FF 330
2A 54
E1 60
我可以使用if(hash.containsKey(string x)){}
检查字符串重复项。如果我想在哈希表中插入另一个数据,但是使用相同的字符串hash.put("AA", 77);
,我根本就不知道如何将哈希表中的值与我的新值一起添加,并且哈希表没有duplikate字符串。这意味着让我最后的仇恨同样看起来
08 86
AA 87
FF 330
2A 54
E1 60
有什么建议吗?
答案 0 :(得分:2)
String yourKey = "AA";
int val = 77;
if (hashtable.containsKey(yourKey))
val += hashtable.get(yourKey));
hashtable.put(yourKey, val);
这将检查重复项,如果有,则将原始值添加到表
答案 1 :(得分:0)
您可以将HashTable更改为HashMap<String, Integer>
(http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html),因为放置HashMap不会添加新密钥:
将指定的值与此映射中的指定键相关联。如果 地图以前包含键的映射,旧值是 取代
答案 2 :(得分:0)
您可以将Hashtable更改为包含数组或整数列表,并提供自己的put方法:
Hashtable<String, List<Integer>> hash = new Hashtable<String, List<Integer>>();
public void put(String key, Integer i) {
if (hash.containsKey(key)) {
List l = hash.get(key);
if (l == null) {
l = new ArrayList<Integer>();
hash.put(key, l);
}
if (!l.contains(i)) {
l.add(i);
}
}
}