微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用参数Java调用迭代器函数

如何解决使用参数Java调用迭代器函数

我有以下类似的课程:

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
}

我不知道如何通过foreach循环在main中调用迭代器函数

我的意思是,当迭代器函数没有参数时,它很简单:

F f = new F();
for(P x: f)
{
System.out.printf("%s\n",p.toString());
}

但是当迭代器函数获取参数时我该怎么做?

解决方法

增强的for循环所需的不是Iterator,而是Iterable

如果您想用一个参数调用F中的方法,并获得可以在增强型for循环中使用的东西,那么您需要您的方法返回Iterable。 >

public class F {
    private final List<P> pra = new ArrayList<P>();
    
    public Iterable<P> filter(S s) {
        return () -> (pra.stream().filter(x -> x.s==s).iterator());
    }
}

这样,您可以使用for (P p : f.filter(s)) ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。