java - 从java中的ArrayList中删除其他类中使用的对象

标签 java arraylist iterator

我的 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/

相关文章:

c++ - 无法访问 multimap 迭代器的方法?

java - 具有泛型的 Java 中的 LinkedList 实现并增强了

java - Java 和 Mojave 的强化运行时

java - 将字符串从 EditText 转换为整数会导致应用程序在启动前停止工作

java - 在Android中测量执行时间的最佳方法?

vb.net - 如何在VB.Net中将Array转换为ArrayList

java - Arraylist.remove(int index) 的源代码中是否不需要这段代码?

java - 如何在java selenium中单击动态<li>元素?

java - Project Euler #4 ArrayList 不添加整数

rust - 获取每行输入第一个单词的迭代器的简单实现