Я действительно изо всех сил пытаюсь понять, как вы пытаетесь реализовать структуру данных, которая хранит значения без базовой структуры данных для хранения указанных значений.
Ваши различные методы, которые фактически обновляют содержимое структуры данных, ничего не делают, кроме как возвращают true
или false
на основе результата проверенного предиката.
Например, HashSet
, который является реализацией интерфейса Set
(который сам является расширением интерфейса Collection
), использует HashMap
в качестве базовой структуры данных поддержки.
Я полагаю, что поскольку вы пытаетесь реализовать нечто подобное, хотя и с использованием Predicate
, вам следует подумать о чем-то подобном.
Таким образом, если вы действительно хотите продолжить, вы можете использовать реализацию, использующую объект List
в качестве вспомогательной структуры данных. Учитывая это, ваш класс PredicateSet
должен был бы пойти дальше и расширить класс AbstractSet
(таким образом получая все функциональные возможности), а также реализовать интерфейс Set
.
Если все сделано правильно, ваш класс должен будет предоставить и реализацию iterator
, которая бы автоматически позволяла использовать метод AbstractCollection#toArray
.
Я бы посоветовал прочитать о реализации HashSet
, чтобы получить больше идей.