在Java中,我们可以使用方法list.remove(Object o)从列表中删除对象,此方法使用对象的equals方法来标识列表中的元素。但是,这需要我们覆盖equals方法(否则将使用equals方法的默认实现,这涉及比较引用)。但是,如果我们处理对象列表并且开发人员无权更改对象的源代码以实现equals方法,那么我们可以做些什么呢?我想知道为什么java没有提供像list.remove(Object o,Comparator c)这样的方法,因为那时我们可以根据自定义相等条件(由比较器实现)删除对象,这个问题的任何解决方案?
答案 0 :(得分:2)
如果您想要更复杂的内容,您可以随时自行迭代,执行所需的任何比较,然后使用List.remove(int)
按索引删除。
答案 1 :(得分:1)
我为此写了一个小框架:
实施:
http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/util/Matcher.html
然后使用:
http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/util/Matchers.html
该库是开源的,可以从这里下载:
http://sourceforge.net/projects/softsmithy/files/softsmithy/v0.1/
或者与Maven:
<dependency>
<groupId>org.softsmithy.lib</groupId>
<artifactId>lib-core</artifactId>
<version>0.1</version>
</dependency>