Commit 2b53015 1 parent 2e04e87 commit 2b53015 Copy full SHA for 2b53015
File tree 1 file changed +6
-13
lines changed
src/main/java/com/ginsberg/gatherers4j
1 file changed +6
-13
lines changed Original file line number Diff line number Diff line change 18
18
19
19
import org .jspecify .annotations .Nullable ;
20
20
21
- import java .util .ArrayList ;
22
- import java .util .List ;
23
- import java .util .function .BiConsumer ;
21
+ import java .util .ArrayDeque ;
22
+ import java .util .Deque ;
24
23
import java .util .function .Supplier ;
25
24
import java .util .stream .Gatherer ;
26
25
@@ -44,20 +43,14 @@ public Supplier<State<INPUT>> initializer() {
44
43
public Integrator <State <INPUT >, INPUT , INPUT > integrator () {
45
44
return Integrator .ofGreedy ((state , element , downstream ) -> {
46
45
state .elements .add (element );
46
+ if (state .elements .size () > count ) {
47
+ downstream .push (state .elements .removeFirst ());
48
+ }
47
49
return !downstream .isRejecting ();
48
50
});
49
51
}
50
52
51
- @ Override
52
- public BiConsumer <State <INPUT >, Downstream <? super INPUT >> finisher () {
53
- return (inputState , downstream ) -> {
54
- for (int i = 0 ; i < inputState .elements .size () - count && !downstream .isRejecting (); i ++) {
55
- downstream .push (inputState .elements .get (i ));
56
- }
57
- };
58
- }
59
-
60
53
public static class State <INPUT > {
61
- final List <INPUT > elements = new ArrayList <>();
54
+ final Deque <INPUT > elements = new ArrayDeque <>();
62
55
}
63
56
}
You can’t perform that action at this time.
0 commit comments