修改Hashtable中的值

时间:2015-03-16 20:17:30

标签: java dictionary 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);,我根本就不知道如何将哈希表中的值与我的新值一起添加,并且哈希表没有duplikate字符串。这意味着让我最后的仇恨同样看起来

08 86
AA 87
FF 330
2A 54
E1 60

有什么建议吗?

3 个答案:

答案 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);
    }
  }
}