0
所以這裏是我面臨的情況:我有可稱爲節點的可迭代對象。 (大約數千)每個節點包含許多鍵和值對。 並且我的算法創建一個新節點(稱爲myNode)並檢查可迭代集合中的每個節點,並且爲可迭代集合中的每個節點檢查 : 節點中每對(鍵值): 如果myNode包含如果myNode的對應值較大: 替換爲新值。 else:myNode.put(key,value)用於比較和插入的最有效的數據結構
目前,我使用HashMap來做這件事,它非常慢,我用ArrayList替換了HashMap後非常奇怪。 有人可以建議更好的數據結構來增加我的程序的性能嗎?
謝謝!
EDI:CODE
ArrayList<Long> newDist = new ArrayList<Long>();
HashMap<Long, Long> myNode = new HashMap<Long, Long>();
for (Node i : nodes){//copy neighbors to set
Set<Long> view = i.keySet();
for (Long j : view) {
if (!(myNode.containsKey(j))) {
myNode.put(j, i.get(j));
} else if (myNode.get(j) > i.get(j)) {
myNode.put(j, i.get(j));
}
}
}
context.write(key, myNode);
你可以發佈你的實際代碼,因爲HashMap很可能應該是最好的選擇。 – 2013-03-17 08:36:31