Как я могу наиболее эффективно рассчитать список / установить разницу - PullRequest
0 голосов
/ 22 августа 2011

У меня есть класс Object: DemoObject.

DemoObject похож на список некоторых объектов fooObject.

У fooObjects есть поле, называемое "ID".

Теперь предположим, что у меня есть два демо-объекта: demoObject1 и demoObject2. Теперь я хочу проверить, есть ли некоторый fooObject, присутствующий в обоих demoObjects, т.е. в demoObject1, а также в 2, тогда я, вероятно, удалил его из demoObject1.

Для проверки fooObject из обоих demoObject я проверяю, является ли поле "ID" fooObject одинаковым или нет.

Как я могу сделать это наиболее эффективно.

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Самое простое и идиоматическое решение требует, чтобы вы предоставили метод equals() в классе FooObject, который сравнивает объекты на основе их идентификатора (или соответствующего Comparator).

Как только вы получите этопросто поместите первый список в Set и используйте Set.removeAll, чтобы удалить из набора все его элементы, содержащиеся в списке 2:

List<FooObject> demoObject1 = ...
List<FooObject> demoObject2 = ...

Set<FooObject> set1 = new HashSet(demoObject1);
set1.removeAll(demoObject2);
0 голосов
/ 22 августа 2011

Использовать Set.retainAll() метод.Я думаю, что он делает то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...