Как удалить объект из списка - PullRequest
2 голосов
/ 10 марта 2012

В Java мы можем удалить объект из списка с помощью метода list.remove (Object o), этот метод использует метод equals объекта для идентификации элемента в списке. Но это требует от нас переопределения метода equals (в противном случае будет использована реализация метода equals по умолчанию, которая включает сравнение ссылок). Но если мы имеем дело со списком объектов, и разработчик не может изменить исходный код объекта для реализации метода equals, что мы можем сделать? Мне интересно, почему java не предоставил такой метод, как list.remove (Object o, Comparator c), потому что тогда мы могли бы удалить объект на основе пользовательского условия равенства (реализованного компаратором), каких-либо решений этой проблемы?

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Если вам нужно что-то более сложное, вы всегда можете выполнить итерацию самостоятельно, выполнив любые сравнения, а затем использовать List.remove(int) для удаления по индексу.

1 голос
/ 10 марта 2012

Я написал для этого небольшую структуру:

Реализация:

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>  
...