2015-10-15 166 views
-1

我有一個包含HashMap包含相同的key

Stack<MyThread> rts;

每個主題包含自定義對象主要是一個HashMap。

HashMap<CustomObject> myMap = rts.pop().mapOfThread;

,我有這些CustomObjectKeys

MyThread.CustomObjectMap

我需要以最快的方式檢查有沒有在協議棧的線程的包含HashMap包含相同密鑰的HashMap的我CustomObject HashMap。

+4

所以大概'線程'這裏不是'java.lang.Thread'? (Eek首先嚐試避免重用已經存在於java.lang中的名稱)。然後不清楚你的第二段代碼如何與此相關。請發佈一個簡短但完整的程序來展示問題 - 目前您的問題很難理解。 –

+0

我編輯了一些更改以便更好地理解 – user2524707

回答

0

所以,如果我理解正確的話,你有許多不相交的包含HashMap的是可以共享密鑰,並要查看是否有任何鍵在任何都一樣?

如果是這樣,除了迭代keySet()並檢查每個HashMap以查看密鑰是否存在,可能通過containsKey(),我確實沒有看到任何解決方案。

+0

對此,有沒有「快速」解決方案? – user2524707

+0

我不這麼認爲,如果你必須詳盡地搜索不相交的HashMaps中的每個重複密鑰。也就是說,我假設你有一個你要迭代的「主」映射來查找關鍵字,然後檢查每個不相交的HashMap是否相等。 HashMaps是爲了查找值而進行調整的;雖然它可能會變慢,但它只是一個很好的方便,我們有'containsKey()'。至少你不必手動迭代每個HashMap。 (如果我對這個問題的假設是正確的,無論如何。) – jdv

+0

你可以跟蹤重複的密鑰在一個單獨的集合(作爲自己的值,或作爲一個計數,或...?);這是一個經典的時間/空間折衷。也就是說,您使用更多空間來跟蹤正在使用的密鑰,因此後續查找速度會更快。 – jdv