使用a ArrayList和a HashMap:[element - > index] 快速解决Java问题。
动机:我需要一组具有RandomAccess属性的项目,尤其是从集合中选择一个随机项目(参见pollRandom方法)。二叉树中的随机导航不准确:树不是完美平衡的,这不会导致均匀分布。public class RandomSet extends AbstractSet {
List dta = new ArrayList();
Map idx = new HashMap();
public RandomSet() {
}
public RandomSet(Collection items) {
for (E item : items) {
idx.put(item, dta.size());
dta.add(item);
}
}
@Override
public boolean add(E item) {
if (idx.containsKey(item)) {
return false;
}
idx.put(item, dta.size());
dta.add(item);
return true;
}
/**
* Override element at position id
with last element.
* @param id
*/
public E removeAt(int id) { </