1212
1313public abstract class SnapshotAgent <K , V > implements Agent , Runnable {
1414 private final AtomicReference <Snapshot <K , V >> snapshot = new AtomicReference <>(new Snapshot <>());
15- private final List < Predicate <Map .Entry <K , V >>> filters = new ArrayList <>() ;
15+ private Predicate <Map .Entry <K , V >> filter = null ;
1616 private Comparator <V > comparator ;
1717
1818 public static <K , V > SnapshotAgent <K , V > create (DataHolder <K , V > holder ) {
@@ -44,7 +44,10 @@ public void stop() {
4444 }
4545
4646 public List <Map .Entry <K , V >> getUrgentSnapshot () {
47- Stream <Map .Entry <K , V >> stream = getDataStream ().filter (snapshot -> filters .stream ().allMatch (filter -> filter .test (snapshot )));
47+ Stream <Map .Entry <K , V >> stream = getDataStream ();
48+ if (filter != null ) {
49+ stream = stream .filter (filter );
50+ }
4851 if (comparator != null ) {
4952 stream = stream .sorted (Map .Entry .comparingByValue (comparator ));
5053 }
@@ -69,8 +72,13 @@ public void setComparator(Comparator<V> comparator) {
6972 this .comparator = comparator ;
7073 }
7174
75+ public void setFilter (Predicate <Map .Entry <K , V >> filter ) {
76+ this .filter = filter ;
77+ }
78+
79+ @ Deprecated
7280 public void addFilter (Predicate <Map .Entry <K , V >> filter ) {
73- filters . add (filter );
81+ setFilter (filter );
7482 }
7583
7684 private static final class Snapshot <K , V > {
0 commit comments