在O(1)时间从Java HashMap获取随机值

时间:2014-06-26 18:24:50

标签: java hashmap

所有

我已阅读这些链接,

Is there a way to get the value of a HashMap randomly in Java?

Selecting random key and value sets from a Map in Java

在keySet上使用toArray()并且list.get()不是一个选项。因为这些方法花费O(n)时间。

上述链接中描述的所有方法都采用O(n)最坏情况从hash map获取随机值。是否可以在O(1)时间内完成这项工作?

1 个答案:

答案 0 :(得分:1)

你可以得到keySet()返回的第一个值.iterator()。next()它是随机的,但每次都会相同,直到更改集合。

唯一的选择是使用反射来获取底层数组并自行导航。

简而言之,HashMap不是为此目的而设计的。如果需要,请使用其他数据结构。