【发布时间】:2017-08-05 11:24:45
【问题描述】:
我创建了一个对象数组 (tab[]),现在我需要通过其中一个字段过滤和打印(例如 print if ob.a>1 )。我创建了一个迭代器接口 ArrayIterator,它遍历列表和谓词接口上的所有条目。这是我的 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 时,我无法创建这样的对象,因为它是一个接口?
【问题讨论】:
-
创建一个实现
Predicate的类,并创建该类的实例。 -
如果我不明白过滤的迭代器是如何通过构造函数传递的,那么查看迭代自定义列表的客户端代码会很有帮助;通常我们做 myList.iterator() 来实现迭代器来遍历元素
-
这能回答你的问题吗? How to implement this FilteringIterator?