Доходность в Python должна быть реализована в Java - PullRequest
1 голос
/ 15 сентября 2011

У меня следующий вопрос:

Напишите класс, который получает серию целых чисел из генератора, который генерирует числа одно за другим. Включите две функции: 1- Сумма 2- Средняя.

Я знаю, что оператор yield - это выбор в python, если генератору нужно генерировать числа по одному, возвращаясь на каждом шаге.

Как бы вы, ребята, сделали это в Java? Я почему-то понятия не имею, как я могу это реализовать

Спасибо.

1 Ответ

4 голосов
/ 15 сентября 2011

Если вы хотите реализовать поведение, подобное «последовательности», вы можете реализовать интерфейс 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;
     }

}
...