用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());
}