Python中的yield需要用java实现

发布于 2024-12-04 22:42:56 字数 182 浏览 1 评论 0原文

我有一个以下问题:

编写一个类,该类从生成器中获取一系列整数,该生成器逐个生成数字。包括两个函数:1- 求和 2- 平均。

我知道如果生成器需要通过在每一步返回来一一生成数字,那么Python中的yield语句是选择。

你们用java会怎么做呢?我不知何故不知道如何实现这一点,

谢谢。

I have a following question:

Write a class that takes a series of integers from a generator that generates numbers one by one. Include two functions: 1- Sum 2- Average.

I know that yield statement is the choice in python if the generator needs to generate numbers one by one by returning at each step.

How would you guys do it in java? I somehow don't have any idea of how I can realize this

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

完美的未来在梦里 2024-12-11 22:42:56

如果您想实现类似“序列”的行为,您可以选择实现 java.util.Iterator 接口。

class RandomSequence implements Iterator<Integer>, Iterable<Integer> {
     private int count;
     private Random random;


     public RandomSequence(int count) {
        this.count = count;
        this.random = new Random();
     }

     Integer next() {
        count--;

        return random.nextInt();

     }

     boolean hasNext() {
        return count > 0;
     }

     Iterator<Integer> iterator() {
        return this;
     }

     public static void main(String[] args) {
         int n = 0;
         for(int n: new RandomSequence(10))
             sum += n;
     }

}

if you want to implement "sequence" like behavior you may choose to implement java.util.Iterator interface.

class RandomSequence implements Iterator<Integer>, Iterable<Integer> {
     private int count;
     private Random random;


     public RandomSequence(int count) {
        this.count = count;
        this.random = new Random();
     }

     Integer next() {
        count--;

        return random.nextInt();

     }

     boolean hasNext() {
        return count > 0;
     }

     Iterator<Integer> iterator() {
        return this;
     }

     public static void main(String[] args) {
         int n = 0;
         for(int n: new RandomSequence(10))
             sum += n;
     }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文