Python中的产量需要在java中实现

时间:2011-09-15 17:10:03

标签: java yield yield-return

我有一个问题:

编写一个类,该类从一个生成数字的生成器中获取一系列整数。包括两个函数:1- Sum-Average。

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

你们如何在java中做到这一点?我不明白我怎么能意识到这个

感谢。

1 个答案:

答案 0 :(得分:4)

如果要实现类似行为的“序列”,可以选择实现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;
     }

}