Java问题,测试它超时,需要修复我的方法-选择
嘿,我的项目上的发布测试有这个代码超时,因为它只需要与唯一对象的数量成比例的时间,我如何缩短时间 给定一个随机数生成器,从包中随机选择一个元素 根据行李中物品的分布情况,例如,如果行李 包含7个a和3个b,则70%的时间choose应返回a, 30%的时间它应该返回b 此操作所需的时间与唯一对象的数量成比例 在袋子里,但不要更多 此操作不应影响行李。 @参数r 随机数发生器 @返回随机选择的元素Java问题,测试它超时,需要修复我的方法-选择,java,Java,嘿,我的项目上的发布测试有这个代码超时,因为它只需要与唯一对象的数量成比例的时间,我如何缩短时间 给定一个随机数生成器,从包中随机选择一个元素 根据行李中物品的分布情况,例如,如果行李 包含7个a和3个b,则70%的时间choose应返回a, 30%的时间它应该返回b 此操作所需的时间与唯一对象的数量成比例 在袋子里,但不要更多 此操作不应影响行李。 @参数r 随机数发生器 @返回随机选择的元素 public T choose(Random r) { ArrayList<T>
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()));
}
如果这是一个JUnit,即使它看起来不像JUnit,您可能希望将其转换为JUnit,您可能希望为测试定义一个JUnit,并减少其随机性。您也可以使用一个测试来帮助您使用不同的输入值运行测试,尽管我相信对于所有不同的参数集,超时时间都是相同的。您的问题是?又是什么问题?这是问题吗?ifMath.random不是答案,但是您可以为T current执行:denseBagMap.keySet,而不是使用迭代器,除非您不支持Java 7。它干净多了。