Java 随机检查arraylist中的对象
我有一个arraylist,里面充满了不同类型的对象。(即扩展超对象的对象) 例如: {1, 反对意见1, 反对意见2, 对象3} 现在我需要做的是有效地从数组列表中拉出一个随机对象。如果它匹配一组条件,那么它将运行此对象的方法。否则它将再次运行,直到找到对象为止 现在我不能从头到尾检查对象的原因是因为我需要提供某种形式的分布Java 随机检查arraylist中的对象,java,arraylist,Java,Arraylist,我有一个arraylist,里面充满了不同类型的对象。(即扩展超对象的对象) 例如: {1, 反对意见1, 反对意见2, 对象3} 现在我需要做的是有效地从数组列表中拉出一个随机对象。如果它匹配一组条件,那么它将运行此对象的方法。否则它将再次运行,直到找到对象为止 现在我不能从头到尾检查对象的原因是因为我需要提供某种形式的分布 我该怎么办?我知道如何迭代数组列表,但随机检查数组中的对象超出了我的范围 不是拾取随机元素,而是将数组遍历一次,然后对结果进行迭代: Collections.shuffl
我该怎么办?我知道如何迭代数组列表,但随机检查数组中的对象超出了我的范围 不是拾取随机元素,而是将数组遍历一次,然后对结果进行迭代:
Collections.shuffle(objects);
for (Object o : objects) {
// you are now accessing objects in random order
}
使用Random类非常容易。因为我不知道您使用的是什么对象,所以我将向您展示一个示例,其中您希望随机搜索整数列表,直到找到一个小于10的整数
ArrayList<int> list = new ArrayList<int>();
Random random = new Random();
do{
int randomlyChosenInt = list.get(random.nextInt(list.Size()));
while(int >= 10);
ArrayList list=new ArrayList();
随机=新随机();
做{
int randomlychosenit=list.get(random.nextInt(list.Size());
而(int>=10);
一种方法是使用Collections.shuffle()洗牌,然后迭代
另一种方法是选择一个随机元素,将其与最后一个元素交换,将其从列表中删除,然后进行检查。其优点是,您不必像shuffle那样交换N次-您只需在找到满意的元素之前进行交换。
集合。shuffle
可能?看到这一点,您可能会多次看到某些元素。