随机检查arraylist中的对象

时间:2014-11-19 20:50:13

标签: java arraylist

我有一个充满不同类型对象的arraylist。 (即扩展超级对象的对象)

一个例子是:

{object1, object1, 对象2, object3}

现在我需要做的是有效地从数组列表中拉出一个随机对象。如果它匹配一组标准,那么它将运行该对象的方法。否则它将再次运行,直到它找到一个对象,直到它。

现在我不能从头到尾遍历对象的原因是因为我需要提供某种形式的分发。

我该怎么做?我知道如何迭代数组列表,但随机检查数组中的对象超出了我的范围。

3 个答案:

答案 0 :(得分:0)

而不是选择随机元素,shuffle数组一次,然后迭代结果:

Collections.shuffle(objects);    
for (Object o : objects) {
  // you are now accessing objects in random order
}

答案 1 :(得分:0)

使用Random类非常简单。由于我不知道您正在使用哪个对象,因此我将向您展示一个示例,您希望随机搜索整数列表,直到找到小于10的整数。

ArrayList<int> list = new ArrayList<int>();
Random random = new Random();

do{
int randomlyChosenInt = list.get(random.nextInt(list.Size()));
while(int >= 10);

答案 2 :(得分:0)

一种方法是使用Collections.shuffle()进行随机播放,然后迭代。

另一种方法是选择一个随机元素,将其与最后一个元素交换,从列表中删除它然后检查。优点是你不必像洗牌一样交换N时间 - 只有在找到满意的元素之后才能进行交换。