0
我需要一個數據結構,我使用兩個鍵來查找。如何實現多鍵查找
什麼是每個選擇的贊成和反對?
Map[K1, Map[K2, V]]
Map[(K1, K2), V]
看來,後一種解決方案將需要大量的元組的實例:get(k1, k2) = m.get((k1,k2))
用例是緩存,所以比寫顯然更閱讀,並且Map
是scala.collection.concurrent.Map
我需要一個數據結構,我使用兩個鍵來查找。如何實現多鍵查找
什麼是每個選擇的贊成和反對?
Map[K1, Map[K2, V]]
Map[(K1, K2), V]
看來,後一種解決方案將需要大量的元組的實例:get(k1, k2) = m.get((k1,k2))
用例是緩存,所以比寫顯然更閱讀,並且Map
是scala.collection.concurrent.Map
如果您預計對於每個K 1會有很多K2,但不是相反,第一個可能會更好。它會使用更多的內存,因爲你有兩個地圖結構,你會有更多的指針間接,儘管這不太可能。
後者是我會用的,因爲它更接近地表示你正在嘗試做什麼。
你是否曾經用k1查找過?你是否想知道哪個密鑰對以某個第一密鑰開始? –
我總是用這兩個鍵來查找 –
然後在我看來,對於你的應用程序來說,「*(K1,K2)」是不可分解的(就這個數據結構而言),你應該選擇第二個選項這更明確。但是,真的,我懷疑還有更重要的決定要做,無所謂 –