用Java参数调用迭代器函数
我的课程如下:用Java参数调用迭代器函数,java,class,iterator,arguments,Java,Class,Iterator,Arguments,我的课程如下: public class F implements Iterable<P> { private final List<P> pra = new ArrayList<P>(); public Iterator<P> iterator() { return pra.iterator(); } public Iterator<P> iterator(S s)
public class F implements Iterable<P>
{
private final List<P> pra = new ArrayList<P>();
public Iterator<P> iterator()
{
return pra.iterator();
}
public Iterator<P> iterator(S s)
{
return pra.stream().filter(x -> x.s == s).iterator();
}
}
public class P
{
//some code
}
public enum S
{
//some code
}
但是,当迭代器函数得到一个参数时,我怎么能做同样的事情呢?增强的for循环需要的不是
迭代器,而是Iterable
如果您想使用参数调用F
中的方法,并获得可以在增强的for循环中使用的内容,那么您需要方法返回Iterable
公共类F{
私有最终列表pra=newarraylist
();
公共Iterable
过滤器{
return()->(pra.stream().filter(x->x.s==s.iterator());
}
}
有了它,您可以使用for(p:f.filter(s))…
好的,我更正了它。但是我如何调用通过foreach循环获取参数的迭代器函数呢?您可以像以前一样调用它,这次只添加参数。尝试只添加参数并调用。
F f = new F();
for(P x: f)
{
System.out.printf("%s\n", p.toString());
}