我有以下的Hashmap:基於值的頻率隨機選擇的一個關鍵
Map <Country, List<City>> map = new HashMap<Country, List<City>>();
我想挑選一組國家的隨意,具有以下條件:國家數字較小的城市應該有更高的被選中的可能性。
爲了解決這個問題,我想我會創建以下地圖:
Map <Country, Integer> map = new HashMap<Country, Integer>();
其中整數代表的List<City>
大小。
這樣我就可以根據Integer值對Map
進行排序,然後選擇具有低整數值的國家。
但是,看起來我正在以非常長的方式做到這一點,加上它不是很隨機。你有什麼建議如何有效地解決這個問題?
你如何使用帶有你自己的'Comparator'的'TreeMap',它會根據大小自動對值進行排序? –
你指的是什麼T和List?請從我們的角度重新閱讀您的帖子(因爲您沒有發佈任何內容而沒有看到您的代碼的人),並對其進行編輯,以便一切都清晰可見。 –
地圖得到/放大概需要O(1),所以你的想法與額外的地圖保持價值頻率看起來不是「很長的路」 –