如何在Java中实现过滤迭代器?
我已经创建了一个对象数组(tab[]),现在我需要通过它们的一个字段进行过滤和打印(例如,如果ob.a>;1,则打印)。我创建了一个迭代器接口ArrayIterator,它遍历列表和谓词接口上的所有条目。这是我的FilterGitterator的构造函数:
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();
}
}
我还有一个实现谓词接口的类:
public interface Predicate
{
public boolean accept(Object ob);
}
当我的FilterGitter需要谓词,而我不能创建这样的对象,因为它是一个接口时,如何使用它
# 1 楼答案
听起来你想在
FilteringIterator
类中实现next()
。 应该是这样的:现在您看到了
next()
,实现hasNext()
也应该是一个简单的练习为了创建谓词,您应该实现谓词接口,例如: