На самом деле это не ответ, но он также не подходит для комментария.
В вашем первом случае вам нужны общие элементы из двух отдельных наборов. Это называется пересечением двух множеств. Интерфейс Set
объявляет метод retainAll()
, который дает вам пересечение двух наборов.
Во втором случае вам нужна разница между двумя наборами. И снова интерфейс Set
объявляет метод removeAll()
.
Однако, согласно информации в вашем вопросе, похоже, что каждый набор содержит разные типы элементов. Я предполагаю, что первый набор содержит экземпляры BaseAdapter
, а второй набор содержит экземпляры EndPoint
.
Итак, чтобы использовать методы retainAll()
и removeAll()
, оба набора должны содержать одинаковые тип элемента. Вы можете решить эту проблему, заставив каждый класс - BaseAdapter
и EndPoint
- реализовывать один и тот же интерфейс. Обратите внимание, что этот интерфейс должен быть только интерфейсом маркера, т. Е. Интерфейсом, который не объявляет никаких методов, например Serializable
. Также обратите внимание, что вам не обязательно использовать интерфейс из JDK, вы можете определить свой собственный, например:
public interface NoMethods {
}
Тем не менее, чтобы методы retainAll()
и removeAll()
давали вам Чтобы получить правильные результаты, вам необходимо реализовать какой-нибудь метод для сравнения экземпляра BaseAdapter
с экземпляром EndPoint
. Для этого сравнения я предлагаю вам использовать интерфейс Comparable
.
Итак, чтобы подвести итог, скелет для класса BaseAdapter
может быть:
public class BaseAdapter implements NoMethods, Comparable<NoMethods> {
}
Аналогично для класса EndPoint
public class EndPoint implements NoMethods, Comparable<NoMethods> {
}
Не забудьте реализовать метод equals(Object)
в обоих классах.
Наконец, вы должны объявить каждый набор как
Set<NoMethods> set;
Обратите внимание, что Я не проверял вышеизложенное, это всего лишь предположение. Отсюда мое вступительное замечание о том, что на самом деле это не ответ.