繁体   English   中英

修改哈希表中的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM