如何从Arraylist中删除随机对象?

时间:2015-12-08 03:17:27

标签: java object arraylist

所以如果这是我的班级:

我的问题是,在step()函数的条件2下,如何从arraylist中删除该对象?我不确定因为该对象是随机函数随机选择的

import java.util.Random;

public class test{

private ArrayList<list> holder;


    public class(){

    int i = 0;

        holder = new ArrayList<Student>();

        for (i=0;i<S;i++){

            holder.add(new holder(i, library));
        }
}


public void step(){

box = students.get(random.nextInt(holder.size()));

if (condition 1){

do this

} else if (condition 2){

** remove the random object from arraylist (how?)**

}

}

2 个答案:

答案 0 :(得分:0)

使用导入的java.util.Random随机生成要删除的值。

所以你可以做Radom rand = new Random();

int randomNum = rand.nextInt(<MAX_TO_GENERATE>) + <MIN_TO_GENERATE>;

MAX_TO_GENERATE是你希望它达到的值(记住Random是独占的,所以如果你做100只会达到99),然后将MIN_TO_GENERATE设置为你想要的最低值生成。

您似乎正在将人员添加到ArrayList,此列表可能包含5,000人,因此可能有一个包含学生计数的变量。看起来你打算和我一起做这件事,但我并不完全确定。

编辑: 生成值后,将其分配给变量,例如

if(holder.get(randomNum) != null) { holder.remove(randomNum); }

然后您可以执行If语句将其删除,例如:

value = {r: 'abc', g: 'something', b: 'hello'};

答案 1 :(得分:0)

接近一个,只需将索引变为变量即可。

public void step(){
    int index=random.nextInt(holder.size());
    box = students.get(index);
    if (condition 1){
        //do this - this is a comment
    } 
    else if (condition 2){
        students.remove(index);
    }
}

方法2,如果您的类Object不是int或Integer:

public void step(){
    box = students.get(random.nextInt(holder.size()));
    if (condition 1){
        //do this - this is a comment
    } 
    else if (condition 2){
        students.remove(box);
    }
}

希望这应该解决它。此外,JavaDocs是你的朋友,引用它们来看看哪些方法做什么以及如何调用它们。