2016-06-17 150 views
0

我有一個關於以這種形式獲取hashmap值的問題<String, List<time,value>>。如果我想簡化我的問題的數據結構是按以下格式:在java中獲取hashmap中列表的值(不是按順序)

{data1=[fetchTime=123, value=1], [fetchTime=124, value=8], [fetchTime=125,value=0], data2=[fetchTime=123, value=3], [fetchTime=124, value=8], [fetchTime=125, value=6], data3=[fetchTime=123, value=6], [fetchTime=124, value=9], [fetchTime=125, value=1]}

我想要做的是計算的「相同」獲取時間值的總和。所以基本上我想總結123的取值時間(1 + 3 + 6)和124(8 + 8 + 9)取時間的值等等。

在這一點上我只關心算法或任何暗示不是確切的運行代碼,所以請告訴我該怎麼做。

謝謝!

+0

當你說「不按順序方式」說你什麼意思?是否允許循環? –

回答

0

作爲一個簡單的解決方案,您可以使用另一個散列圖: 即。 resultMap<fetchTime, [long]sum> :)

for each item in hashmap 
    //+ extra for for each item of your list 
    if (resultMap.contains(item.fetchTime)) 
    resultMap.put(item.fetchTime, item.value + resultMap.get(item.value)) 
    else 
    resultMap.put(item.fetchTime, item.value) 

for each item in resultMap 
    ... print keys and values 
+0

非常感謝您的回答,但是如何確保匹配取閱時間的總和? (resultMap.contains(item.fetchTime))做什麼? – sasha

+0

https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#containsKey(java.lang.Object) –

+0

我打算說containsKey。它是一個來自hashmap的方法。如果存在密鑰,它將返回true。如果它存在,則獲取該密鑰的存儲值並添加當前項目的值,然後將此新值存儲到該密鑰中 –

相關問題