Stack<MyThread> rts;
每個主題包含自定義對象主要是一個HashMap。
HashMap<CustomObject> myMap = rts.pop().mapOfThread;
,我有這些CustomObjectKeys
MyThread.CustomObjectMap
我需要以最快的方式檢查有沒有在協議棧的線程的包含HashMap包含相同密鑰的HashMap的我CustomObject HashMap。
Stack<MyThread> rts;
每個主題包含自定義對象主要是一個HashMap。
HashMap<CustomObject> myMap = rts.pop().mapOfThread;
,我有這些CustomObjectKeys
MyThread.CustomObjectMap
我需要以最快的方式檢查有沒有在協議棧的線程的包含HashMap包含相同密鑰的HashMap的我CustomObject HashMap。
所以,如果我理解正確的話,你有許多不相交的包含HashMap的是可以共享密鑰,並要查看是否有任何鍵在任何或都一樣?
如果是這樣,除了迭代keySet()
並檢查每個HashMap以查看密鑰是否存在,可能通過containsKey()
,我確實沒有看到任何解決方案。
對此,有沒有「快速」解決方案? – user2524707
我不這麼認爲,如果你必須詳盡地搜索不相交的HashMaps中的每個重複密鑰。也就是說,我假設你有一個你要迭代的「主」映射來查找關鍵字,然後檢查每個不相交的HashMap是否相等。 HashMaps是爲了查找值而進行調整的;雖然它可能會變慢,但它只是一個很好的方便,我們有'containsKey()'。至少你不必手動迭代每個HashMap。 (如果我對這個問題的假設是正確的,無論如何。) – jdv
你可以跟蹤重複的密鑰在一個單獨的集合(作爲自己的值,或作爲一個計數,或...?);這是一個經典的時間/空間折衷。也就是說,您使用更多空間來跟蹤正在使用的密鑰,因此後續查找速度會更快。 – jdv
所以大概'線程'這裏不是'java.lang.Thread'? (Eek首先嚐試避免重用已經存在於java.lang中的名稱)。然後不清楚你的第二段代碼如何與此相關。請發佈一個簡短但完整的程序來展示問題 - 目前您的問題很難理解。 –
我編輯了一些更改以便更好地理解 – user2524707