gpt4 book ai didi

java - 如何从 Java 中的 HashMap 中选择一个随机键?

转载 作者:太空狗 更新时间:2023-10-29 22:50:02 25 4
gpt4 key购买 nike

我正在使用大型 ArrayList<HashMap<A,B>> ,我会反复需要从随机 HashMap 中选择一个随机键(并用它做一些事情)。选择随机 HashMap 很简单,但我应该如何从这个 HashMap 中选择一个随机键?

速度很重要(因为我需要这样做 10000 次并且 HashMap 很大),所以只需在 [0,9999] 中选择一个随机数 k 然后执行 .next()在迭代器上 k 次,真的不是一个选项。 同样,在每次随机选择时将 HashMap 转换为数组或 ArrayList 确实不是一种选择。请在回复之前阅读此内容。

从技术上讲,我认为这应该是可能的,因为 HashMap 将其键存储在 Entry[] 中。在内部,从数组中随机选择很容易,但我不知道如何访问这个 Entry[] .所以任何访问内部的想法Entry[]非常欢迎。当然也欢迎其他解决方案(只要它们不消耗散列图大小的线性时间)。

注意:启发式方法很好,所以如果有一种方法可以排除 1% 的元素(例如,因为有多个填充的桶),那完全没有问题。

最佳答案

从我的头顶

List<A> keysAsArray = new ArrayList<A>(map.keySet())
Random r = new Random()

然后就

map.get(keysAsArray.get(r.nextInt(keysAsArray.size()))

关于java - 如何从 Java 中的 HashMap 中选择一个随机键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12385284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com