【发布时间】:2013-11-04 15:48:14
【问题描述】:
我有以下哈希图:
Map <Country, List<City>> map = new HashMap<Country, List<City>>();
我想随机选择一组国家,条件如下:城市数量较少的国家应该有较高的被选中概率。
为了解决这个问题,我想我会创建以下地图:
Map <Country, Integer> map = new HashMap<Country, Integer>();
其中整数表示List<City> 的大小。
这样我就可以根据整数值对Map 进行排序,然后选择整数值较低的国家/地区。
但似乎我这样做的时间很长,而且它不是很随机。您对如何有效解决这个问题有什么建议吗?
【问题讨论】:
-
您只需将
TreeMap与您自己的Comparator一起使用会自动根据大小对值进行排序吗? -
你指的这个T和List是什么?请从我们的角度重新阅读您的帖子(因为您没有发布任何代码而没有看到您的代码的人),并对其进行编辑,以使一切都一清二楚。
-
map get/put 粗略来说需要 O(1),所以你用额外的 map 来保持值频率的想法看起来并不是“很长的路要走”
-
@JoshM 谢谢这是个好主意。
-
@RegUser "所以 List
的大小越小,它被选中的可能性就越大。"这是什么意思?你的问题有点迟钝,因为你从不解释你在做什么。您只是在寻找城市数量最少的国家吗?上面的引用表明可能不是,但不清楚。
标签: java hashmap frequency-analysis