在Java中,我们可以使用list.remove(Object o)方法从列表中删除对象,此方法使用对象的equals方法标识列表中的元素。但是,这要求我们重写equals方法(否则将使用equals方法的默认实现,这涉及比较引用)。但是,如果我们正在处理一系列对象并且开发人员没有权利更改对象的源代码以实现equals方法,那我们该怎么办?我想知道为什么java没有提供像list.remove(Object o,Comparator c)这样的方法,因为那么我们可以根据自定义相等条件(由比较器实现)删除对象,解决这个问题的任何解决方案?如何从列表中删除对象
2
A
回答
2
如果您想要任何更复杂的事情,您可以随时迭代自己,执行所需的任何比较,然后使用List.remove(int)
按索引删除。
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>
相关问题
- 1. 从对象列表中删除对象
- 2. 删除对象从列表
- 3. 从列表中删除对象
- 4. 无法从列表中删除对象
- 5. 从列表中删除特定对象
- 6. 从C++列表中删除对象
- 7. 从列表中删除对象
- 8. 如果列表对象包含东西从列表中删除
- 9. 如何从jQuery中的列表中删除对象
- 10. 如何删除对象的Python列表
- 11. 从python中的对象列表中删除对象
- 12. 如何从地图列表中删除特定对象?
- 13. 如何从列表中删除空对象(不是值)
- 14. 如何从python列表中删除对象的实例?
- 15. 如何从列表中删除对象<T>
- 16. Java。如何从两个列表中删除重复的对象
- 17. 如何从C++列表中删除对象?
- 18. python3如何从列表中删除线程对象
- 19. 如何从列表中删除dulipate对象
- 20. Python。如何从列表中删除一个对象
- 21. 如何从列表中删除字符串对象?
- 22. 如何从对象列表中删除双胞胎?
- 23. 如何从列表中删除特定的对象<T>
- 24. 如何从对象列表项中删除填充?
- 25. 如何从绑定源中删除对象不影响列表中的对象
- 26. 删除对象::列表
- 27. 无法从另一个对象的列表中删除对象
- 28. 从另一个列表中删除对象列表
- 29. 从列表中与列表删除重复作为对象
- 30. 从嵌套子列表中删除对象的空列表
这是复杂的,如果我有,例如三个对象删除,那么我将不得不遍历非常仔细和删除,因为每次我删除对象,列表的大小减少,因此如果我使用for循环(迭代直到达到列表的初始大小)可能会发生异常(因为可能会尝试删除索引上的对象高于实际大小)...这我想避免 – Gaurav 2012-03-10 19:33:28
@Gaurav:典型的解决方案是*要么*每次检查列表的大小(并减少索引)或迭代te从头到尾。 – 2012-03-10 19:38:40
或者,使用'Iterator.remove()'。 – 2012-03-10 20:38:27