嘿,我的项目上的发布测试有这个代码超时,因为它只需要与唯一对象数量成比例的时间,我怎样才能减少时间?
给定一个随机数生成器,根据 Bag 中对象的分布情况从 Bag 中随机选择一个元素(例如,如果一个 Bag 包含 7 个 a 和 3 个 b,那么 70% 的时间选择应该返回一个 a,30%它应该返回 a b 的时间。
此操作所花费的时间与 Bag 中唯一对象的数量成正比,但不会更多。
此操作不应影响 Bag。@param r 随机数生成器 @return 随机选择的元素
public T choose(Random r) {
ArrayList<T> keyArrayList = new ArrayList<T>();
int index = 0;
Iterator<T> it = denseBagMap.keySet().iterator();
while (it.hasNext()){
T current = it.next();
while (index < denseBagMap.get(current)){
keyArrayList.add(current);
index++;
}
index = 0;
}
return keyArrayList.get(r.nextInt(keyArrayList.size()));
}