2016-09-17 84 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