0
我需要一個非常快速的機制,通過Hashtable中的條目以隨機順序進行迭代。表中的條目數通常在10左右,並且永遠不會超過20個。目前,我正在執行以下代碼,通過挑選16個隨機唯一的雙精度並對其進行排序來隨機化鍵的順序,但我正在思考它不是最有效的解決方案:需要一個非常快速的Java機制,以隨機順序通過Hashtable中的條目進行迭代
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);
..................
一個建議我得到是從0迭代的鍵陣列到尺寸-2和交換基元i與隨機元素(從i + 1到大小-1 )。至少是線性的。期待意見!
集合有一個shuffle方法嗎?爲什麼我不知道這件事? *咧嘴*感謝您的快速響應。這應該被標記爲我的問題之一 –