如何从Java中的HashMap中选择随机密钥?
我正在使用一个大的,我反复需要从随机的HashMap中选择一个随机的密钥(并用它做一些事情)。选择随机哈希映射是微不足道的,但是我应该如何从此哈希映射中选择随机密钥?ArrayList<HashMap<A,B>>
速度很重要(因为我需要这样做10000次,并且哈希映射很大),所以只是在[0,9999]中选择一个随机数k,然后在迭代器k次上做,真的不是一个选择。同样,在每次随机选择时将HashMap转换为数组或ArrayList实际上不是一种选择。请在回复之前阅读此内容。.next()
从技术上讲,我觉得这应该是可能的,因为HashMap将其密钥存储在内部,并且从数组中随机选择很容易,但是我不知道如何访问它 。因此,任何访问内部的想法都是非常受欢迎的。当然,其他解决方案(只要它们不消耗哈希图大小的线性时间)也很受欢迎。Entry[]
Entry[]
Entry[]
注意:启发式方法很好,所以如果有一种方法可以排除1%的元素(例如,因为多填充的桶),那完全没有问题。