1
1
package com .baeldung .streams .gatherer ;
2
2
3
- import java .util .ArrayList ;
4
- import java .util .List ;
3
+ import java .util .*;
5
4
import java .util .function .BiConsumer ;
6
5
import java .util .function .Supplier ;
7
6
import java .util .stream .Gatherer ;
8
7
9
- public class SlidingWindowGatherer implements Gatherer <Integer , ArrayList <Integer >, List <Integer >> {
8
+ public class SlidingWindowGatherer implements Gatherer <Integer , Deque <Integer >, List <Integer >> {
10
9
11
10
@ Override
12
- public Supplier <ArrayList <Integer >> initializer () {
13
- return ArrayList ::new ;
11
+ public Supplier <Deque <Integer >> initializer () {
12
+ return ArrayDeque ::new ;
14
13
}
15
14
16
15
@ Override
17
- public Integrator <ArrayList <Integer >, Integer , List <Integer >> integrator () {
16
+ public Integrator <Deque <Integer >, Integer , List <Integer >> integrator () {
18
17
return new Integrator <>() {
19
18
@ Override
20
- public boolean integrate (ArrayList <Integer > state , Integer element , Downstream <? super List <Integer >> downstream ) {
21
- state .add (element );
19
+ public boolean integrate (Deque <Integer > state , Integer element , Downstream <? super List <Integer >> downstream ) {
20
+ state .addLast (element );
22
21
if (state .size () == 3 ) {
23
22
downstream .push (new ArrayList <>(state ));
24
23
state .removeFirst ();
@@ -29,12 +28,7 @@ public boolean integrate(ArrayList<Integer> state, Integer element, Downstream<?
29
28
}
30
29
31
30
@ Override
32
- public BiConsumer <ArrayList <Integer >, Downstream <? super List <Integer >>> finisher () {
33
- return (state , downstream ) -> {
34
- if (state .size ()==3 ) {
35
- downstream .push (new ArrayList <>(state ));
36
- }
37
- };
38
-
31
+ public BiConsumer <Deque <Integer >, Downstream <? super List <Integer >>> finisher () {
32
+ return (state , downstream ) -> {};
39
33
}
40
34
}
0 commit comments