package org.limewire.collection;
import java.util.Iterator;
import java.util.Map;
/**
* A variant of <tt>FixedSizeArrayHashMap</tt> that allows iterations over
* its elements in random order.
*/
public class RandomOrderHashMap<K, V> extends FixedSizeArrayHashMap<K, V> {
public RandomOrderHashMap(Map<? extends K, ? extends V> m) {
super(m);
}
public RandomOrderHashMap(int maxCapacity, Map<? extends K, ? extends V> m) {
super(maxCapacity, m);
}
public RandomOrderHashMap(int maxSize, int initialCapacity, float loadFactor) {
super(maxSize, initialCapacity, loadFactor);
}
public RandomOrderHashMap(int maxCapacity) {
super(maxCapacity);
}
@Override
protected Iterator<Map.Entry<K, V>> newEntryIterator() {
return new RandomIterator();
}
private class RandomIterator extends UnmodifiableIterator<Map.Entry<K, V>> {
private final Iterator<Integer> sequence = new RandomSequence(size()).iterator();
public boolean hasNext() {
return sequence.hasNext();
}
public Map.Entry<K, V> next() {
return getEntryAt(sequence.next());
}
}
}