2015-11-19 5 views
0

У меня есть два списка объектов. Я собираюсь удалить эти объекты из List1, которые также находятся в List2. Список 2 может иметь свои собственные объекты, которые List1 не содержит их. Я собираюсь сравнить объекты внутри списков на основе их идентификаторов. Я не могу использовать методы remove() или removeAll(), и я не собираюсь создавать какой-либо набор. Каким будет эффективный способ?Как эффективно сравнивать два списка?

+0

Использование remove or removeAll - Почему вы не можете ими воспользоваться? – mikeb

+0

Они не работают по ряду причин. – Nisman

+0

Являются ли списки заказаны каким-либо образом? – hatchet

ответ

0

Вы должны переписать методы equals() и hashcode() в свои классы элементов, чтобы иметь возможность использовать removeAll() на основе равенства объектов. См. Java documentation для обсуждения того, как реализовать эти методы.

+0

... если Java - это то, что использует OP. – hatchet

+0

Я пытаюсь использовать это: возвращение Lists.newArrayList (Iterables.filter (песни2, новый Predicate () { @Override общественного булево применить (объект Object) { возврат list1.contains (object.getId())! ; } })); Но это не работает. – Nisman

+1

Обновите свой вопрос, а не комментируете здесь. –

Смежные вопросы