我需要一种非常快速的机制,通过Hashtable中的条目以随机顺序进行迭代.表中的条目数通常约为10,永远不会超过20.目前我正在执行以下代码,通过选择16个随机,独特的双打并对其进行排序来随机化键的顺序,但我正在思考它不是最有效的解决方案:
TreeMap<Double, String> seeds = new TreeMap<Double, String>();
// These go in random order
Enumeration<String> keys = content.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
Double seedKey = new Double(Math.random());
while (seeds.get(seedKey) != null)
seedKey = new Double(Math.random());
seeds.put(seedKey, key);
}
// Now enumerate through the seeds
Set<Double> keys2 = seeds.keySet();
for (Double d : keys2) {
String key = seeds.get(d);
String value = content.get( key );
..................
Run Code Online (Sandbox Code Playgroud)
我给出的一个建议是将关键数组从0迭代到size-2,并将元素i与元素随机交换(从i + 1到size-1).它至少是线性的.期待建议!
List<Map.Entry<Key, Value>> entries = new ArrayList<>(map.entrySet());
Collections.shuffle(entries);
for (Map.Entry<Key, Value> entry : entries) {
// do whatever with entry.getKey(), entry.getValue()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |