@@ -75,7 +75,7 @@ def iterate(seed, operator):
7575 :param UnaryOperator operator: a function to be applied to the previous element to produce a new element
7676 :return: a new sequential Stream
7777 '''
78- return Stream (IteratorUtils .iterate (seed , operator ))
78+ return Stream (lambda : IteratorUtils .iterate (seed , operator ))
7979
8080 @staticmethod
8181 def generate (supplier ):
@@ -85,7 +85,7 @@ def generate(supplier):
8585 :param Supplier supplier: the Supplier of generated elements
8686 :return: a new infinite sequential unordered Stream
8787 '''
88- return Stream (IteratorUtils .generate (supplier ))
88+ return Stream (lambda : IteratorUtils .generate (supplier ))
8989
9090 @staticmethod
9191 def concat (* streams ):
@@ -97,80 +97,20 @@ def concat(*streams):
9797 '''
9898 return Stream (IteratorUtils .concat (* streams ))
9999
100- """
101- Already Implemented Method
102- """
103-
104- @staticmethod
105- def randint (lower , upper ):
106- '''
107- Returns an infinite stream of random integer in range [a, b], including both end points.
108-
109- :param int lower: min value for random numbers
110- :param int upper: max value for random numbers
111- :return: the infinite random stream
112- '''
113- return Stream .generate (lambda : random .randint (lower , upper ))
114-
115- @staticmethod
116- def integers ():
117- '''
118- Returns an infinite stream of integer from 0 to infinity
119-
120- :return: the infinite stream
121- '''
122- return Stream .iterate (0 , lambda i : i + 1 )
123-
124- @staticmethod
125- def odds ():
126- '''
127- Returns an infinite stream of odds number from 0 to infinity
128-
129- :return: the infinite stream
130- '''
131- return Stream .iterate (1 , lambda i : i + 2 )
132-
133- @staticmethod
134- def evens ():
135- '''
136- Returns an infinite stream of evens number from 0 to infinity
137-
138- :return: the infinite stream
139- '''
140- return Stream .iterate (0 , lambda i : i + 2 )
141-
142- @staticmethod
143- def primes ():
144- '''
145- Returns an infinite stream of primes number from 2 to infinity
146-
147- :return: the infinite stream
148- '''
149- def prime_generator ():
150- yield 2
151- primes = [2 ]
152- actual = 1
153- while True :
154- actual += 2
155- for prime in primes :
156- if actual % prime == 0 :
157- break
158- else :
159- primes .append (actual )
160- yield actual
161-
162- return Stream (prime_generator ())
163-
164100 """
165101 Normal Methods
166102 """
167103
168104 def __init__ (self , iterable ):
105+ def itS (it ):
106+ for elem in it :
107+ yield elem
169108 self .__iterable = iterable
109+ self .__iterable_supplier = lambda : itS (self .__iterable )
170110
171111 def parallel (self ):
172112 from .parallelstream import ParallelStream
173- return ParallelStream (self .__iterable )
113+ return ParallelStream (self .__iterable_supplier )
174114
175115 def filter (self , predicate ):
176116 '''
0 commit comments