所以如果这是我的班级:
我的问题是,在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?)**
}
}
答案 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是你的朋友,引用它们来看看哪些方法做什么以及如何调用它们。