如何从列表中删除对象

时间:2012-03-10 19:17:09

标签: java list object equals

在Java中,我们可以使用方法list.remove(Object o)从列表中删除对象,此方法使用对象的equals方法来标识列表中的元素。但是,这需要我们覆盖equals方法(否则将使用equals方法的默认实现,这涉及比较引用)。但是,如果我们处理对象列表并且开发人员无权更改对象的源代码以实现equals方法,那么我们可以做些什么呢?我想知道为什么java没有提供像list.remove(Object o,Comparator c)这样的方法,因为那时我们可以根据自定义相等条件(由比较器实现)删除对象,这个问题的任何解决方案?

2 个答案:

答案 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>