[英]Modifying value in Hashtable
您好,我遇到了一个问题,即当两个键相等时,修改哈希表中的某些值。
我定义我的哈希表,
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);
我只是不知道如何将哈希表中的值与新值加在一起,并且哈希表中没有重复字符串。 这意味着我的最终hastable看起来也一样
08 86
AA 87
FF 330
2A 54
E1 60
有什么建议么?
String yourKey = "AA";
int val = 77;
if (hashtable.containsKey(yourKey))
val += hashtable.get(yourKey));
hashtable.put(yourKey, val);
这将检查重复项,然后检查是否存在重复项,将原始值添加到表中
您可以将HashTable更改为HashMap<String, Integer>
( http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html ),因为放置的HashMap不会添加新的键:
将指定值与该映射中的指定键相关联。 如果该映射先前包含该键的映射,则旧值将被替换
您可以更改哈希表以包含一个数组或一个整数列表,并提供自己的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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.