2016-09-17 80 views
-3

我处于一种情况,我想要一个整数值作为键和一个Double作为值的数组(我知道长度)的哈希映射。 所以我想有一些像Java HashMap的矢量

 HashMap<Integer, Double[]> hash = new HashMap<Integer, Double[]>(); 

接下来,我扫描的ResultSet发现键,第一个属性值。 在第一阶段结束时,我将会有一个带有一些键的散列图,对于每个键我都会有一个Double值表示特定的分​​数。

接下来,我想扫描另一个不同的结果集与不同的键,值,我想用这些值填充我的散列。 问题是,在这里我可以找到我没有一个条目和文件,我已经有一个条目的元素。

我想到达的情况下,我可以访问所有不同的分数的特定键。

如何添加迭代值到这些数组?因为如果我使用通常的hash.put(key,value),我必须使用Double []作为值,但是我想迭代地添加到哈希映射不同的分数。

我认为使用Vector可能会带来一些问题,因为某些键可能有一些空值,而这些值不会填充。

+1

你能举个例子吗?或者你尝试过的一些代码? – Shahid

+0

我想创建一个双精度数组的哈希映射如下:HashMap hash = new HashMap () 但是,当我添加一个元素到哈希映射我不想添加所有的数组(因为我不知道它在开始),但我想迭代地添加一个元素到数组的每个字段。例如,我会有像hash.put(key,0,value [0])的东西,其中0是数组中的位置的索引,在该位置中要表示特定的值。然后,我会有类似hash.put (key,1,value),它将为数组的第一个位置添加特定值的键。 – FreddyK

+0

是否必须使用Double []?因为使用列表会让事情变得更容易。 – Shahid

回答

0

我不确定我的理解能力如何。我想你可能会做点什么:

double[] arrayInMap = hash.get(key); 
    if (arrayInMap == null) { 
     hash.put(key, valuesToAdd); 
    } else { 
     if (arrayInMap.length != valuesToAdd.length) { 
      throw new IllegalStateException("Key "+ key + ": cannot add " + valuesToAdd.length 
        + " values to array of length " + arrayInMap.length); 
     } 
     for (int ix = 0; ix < arrayInMap.length; ix++) { 
      arrayInMap[ix] += valuesToAdd[ix]; 
     } 
    } 

我希望你至少能够用它作为灵感。

+0

是的,我不认为这样做。我会尝试非常感谢你! – FreddyK