@@ -37,7 +37,12 @@ public <K, E> Stream<Grouping<K, E>> groupBy(Selector<T, K> keySelector, Selecto
3737
3838 @ Override
3939 public <K > Stream <Grouping <K , T >> groupBy (Selector <T , K > keySelector ) {
40- return groupBy (keySelector , t -> t );
40+ return groupBy (keySelector , new Selector <T , T >() {
41+ @ Override
42+ public T select (T t ) {
43+ return t ;
44+ }
45+ });
4146 }
4247
4348 @ Override
@@ -47,7 +52,12 @@ public <R> OrderedStream<T> orderBy(Selector<T, R> keySelector, Comparator<R> co
4752
4853 @ Override
4954 public <R extends Comparable <R >> OrderedStream <T > orderBy (Selector <T , R > keySelector ) {
50- return orderBy (keySelector , R ::compareTo );
55+ return orderBy (keySelector , new Comparator <R >() {
56+ @ Override
57+ public int compare (R r , R o ) {
58+ return r .compareTo (o );
59+ }
60+ });
5161 }
5262
5363 @ Override
@@ -56,8 +66,13 @@ public <R> OrderedStream<T> orderByDescending(Selector<T, R> keySelector, Compar
5666 }
5767
5868 @ Override
59- public <R extends Comparable <R >> OrderedStream <T > orderByDescending (Selector <T , R > keySelector ) {
60- return orderByDescending (keySelector , R ::compareTo );
69+ public <R extends Comparable <R >> OrderedStream <T > orderByDescending (final Selector <T , R > keySelector ) {
70+ return orderByDescending (keySelector , new Comparator <R >() {
71+ @ Override
72+ public int compare (R r , R o ) {
73+ return r .compareTo (o );
74+ }
75+ });
6176 }
6277
6378 @ Override
@@ -84,43 +99,83 @@ public Stream<T> skip(int count) {
8499
85100 @ Override
86101 public Stream <T > distinct () {
87- HashSet <T > set = new HashSet <>();
88- return where (set ::add );
102+ final HashSet <T > set = new HashSet <>();
103+ return where (new Predicate <T >() {
104+ @ Override
105+ public boolean apply (T e ) {
106+ return set .add (e );
107+ }
108+ });
89109 }
90110
91111 @ Override
92- public Byte sum (SelectorByte <T > selector ) {
93- return aggregate ((byte )0 , (Byte v , T t ) -> (byte )(v + selector .select (t )));
112+ public Byte sum (final SelectorByte <T > selector ) {
113+ return aggregate ((byte )0 , new Aggregator <T , Byte >() {
114+ @ Override
115+ public Byte aggregate (Byte v , T t ) {
116+ return (byte ) (v + selector .select (t ));
117+ }
118+ });
94119 }
95120
96121 @ Override
97- public Short sum (SelectorShort <T > selector ) {
98- return aggregate ((short )0 , (Short v , T t ) -> (short )(v + selector .select (t )));
122+ public Short sum (final SelectorShort <T > selector ) {
123+ return aggregate ((short )0 , new Aggregator <T , Short >() {
124+ @ Override
125+ public Short aggregate (Short v , T t ) {
126+ return (short ) (v + selector .select (t ));
127+ }
128+ });
99129 }
100130
101131 @ Override
102- public Integer sum (SelectorInteger <T > selector ) {
103- return aggregate (0 , (Integer v , T t ) -> v + selector .select (t ));
132+ public Integer sum (final SelectorInteger <T > selector ) {
133+ return aggregate (0 , new Aggregator <T , Integer >() {
134+ @ Override
135+ public Integer aggregate (Integer v , T t ) {
136+ return v + selector .select (t );
137+ }
138+ });
104139 }
105140
106141 @ Override
107- public Long sum (SelectorLong <T > selector ) {
108- return aggregate (0l , (Long v , T t ) -> v + selector .select (t ));
142+ public Long sum (final SelectorLong <T > selector ) {
143+ return aggregate (0l , new Aggregator <T , Long >() {
144+ @ Override
145+ public Long aggregate (Long v , T t ) {
146+ return v + selector .select (t );
147+ }
148+ });
109149 }
110150
111151 @ Override
112- public Float sum (SelectorFloat <T > selector ) {
113- return aggregate (0f , (Float v , T t ) -> v + selector .select (t ));
152+ public Float sum (final SelectorFloat <T > selector ) {
153+ return aggregate (0f , new Aggregator <T , Float >() {
154+ @ Override
155+ public Float aggregate (Float v , T t ) {
156+ return v + selector .select (t );
157+ }
158+ });
114159 }
115160
116161 @ Override
117- public Double sum (SelectorDouble <T > selector ) {
118- return aggregate (0d , (Double v , T t ) -> v + selector .select (t ));
162+ public Double sum (final SelectorDouble <T > selector ) {
163+ return aggregate (0d , new Aggregator <T , Double >() {
164+ @ Override
165+ public Double aggregate (Double v , T t ) {
166+ return v + selector .select (t );
167+ }
168+ });
119169 }
120170
121171 @ Override
122- public BigDecimal sum (SelectorBigDecimal <T > selector ) {
123- return aggregate (new BigDecimal (0 ), (BigDecimal v , T t ) -> v .add (selector .select (t )));
172+ public BigDecimal sum (final SelectorBigDecimal <T > selector ) {
173+ return aggregate (new BigDecimal (0 ), new Aggregator <T , BigDecimal >() {
174+ @ Override
175+ public BigDecimal aggregate (BigDecimal v , T t ) {
176+ return v .add (selector .select (t ));
177+ }
178+ });
124179 }
125180
126181 @ Override
@@ -135,7 +190,12 @@ public boolean any(Predicate<T> predicate) {
135190
136191 @ Override
137192 public int count () {
138- return aggregate (0 , (a , t ) -> a + 1 );
193+ return aggregate (0 , new Aggregator <T , Integer >() {
194+ @ Override
195+ public Integer aggregate (Integer a , T t ) {
196+ return a + 1 ;
197+ }
198+ });
139199 }
140200
141201 @ Override
@@ -249,7 +309,12 @@ public List<T> toList() {
249309
250310 @ Override
251311 public <K > Map <K , T > toMap (Selector <T , K > keySelector ) {
252- return toMap (keySelector , t -> t );
312+ return toMap (keySelector , new Selector <T , T >() {
313+ @ Override
314+ public T select (T t ) {
315+ return t ;
316+ }
317+ });
253318 }
254319
255320 @ Override
0 commit comments