Я создал массив объектов (tab[]), и теперь мне нужно отфильтровать и распечатать их через одно из их полей (например, напечатать, если ob.a>1 ). Я создал интерфейс Iterator, ArrayIterator, который проходит через все записи в списке, и интерфейс Predicate. Это конструктор моего FilteringIterator:
Код: Выделить всё
private final Iterator iterf;
private final Predicate pred;
public FilteringIterator(ArrayIterator i, Predicate predykat)
{
iterf=i;
pred=predykat;
iterf.first();
}
Метод, который печатает каждую запись с помощью моего «базового» итератора, выглядит следующим образом:
Код: Выделить всё
public void printlist()
{
ArrayIterator itab =new ArrayIterator(lista);
for(itab.first();!itab.isDone(); itab.next())
{
Student stud=(Student)itab.current();
stud.show();
}
}
У меня также есть класс, реализующий интерфейс Predicate:
Код: Выделить всё
public interface Predicate
{
public boolean accept(Object ob);
}
Как использовать мой FilteringIterator, если для него требуется Predicate, а я не могу создать такой объект, поскольку это интерфейс?
Подробнее здесь:
https://stackoverflow.com/questions/427 ... or-in-java