是否可以通过在 Java 中传递自定义的 equals() 方法来使用 Collections.removeAll()?

mis*_*que 3 java collections

考虑到我有一个Student只有 getter 和 setter的 Java 对象,我无法更改,以及两个 Lists——students1而且students2都是 type ArrayList<Student>

如何students1.removeAll(students2)通过传递我自己的equals()方法来调用?

这是因为我无法修改Student类。

Tim*_*sen 6

好吧,一种选择可能是在这里使用装饰器模式,然后将Student类包装在一个新类中,然后equals()使用您想要的任何新逻辑覆盖该方法,例如

public class YourStudent {
    private Student instance;

    public YourStudent() { ... }

    @Override
    public boolean equals(Object obj) { ... }
}
Run Code Online (Sandbox Code Playgroud)