我的 School
类(class)中有一个 ArrayList
教师。我还有一个附加到 School
类的 Administrator
类。我想从学校的 Administrator
类(class)中随机删除教师。这是我的代码:
public void instructorMayLeave(){
Iterator<Instructor> instructorIterator = school.getInstructors().iterator();
while (instructorIterator.hasNext()){
Instructor instructor = instructorIterator.next();
int chanceOfLeaving = random.nextInt(100);
if(chanceOfLeaving < 20){
instructorIterator.remove();
}
}
}
但是,我认为教师实际上并没有被从学校类(class)中删除。谁能帮我解决这个问题吗?
最佳答案
这取决于 getInstructors()
的具体作用。
- 它可能会返回讲师列表的副本。如果是这样,您的代码只会从副本中删除教师,而不是从学校中删除。在这种情况下,您需要学校有一个
removeInstructor
方法或类似方法供您调用。 - 或者
getInstructors()
可能会返回讲师列表本身。在这种情况下,您的代码将从学校列表中删除教师(当然,这取决于您的随机数)。
前者被认为是安全的设计。学校最终可以自行决定是否罢免教师。在后一种设计中,客户可以无限期地保留对列表的引用,并在将来随时添加和删除讲师。
关于java - 从java中的ArrayList中删除其他类中使用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59116664/