21
21
import java .util .ArrayList ;
22
22
import java .util .Collections ;
23
23
import java .util .HashMap ;
24
+ import java .util .HashSet ;
24
25
import java .util .List ;
25
26
import java .util .Map ;
27
+ import java .util .Set ;
26
28
import java .util .concurrent .ConcurrentHashMap ;
27
29
28
30
import javax .annotation .Nonnull ;
@@ -37,7 +39,7 @@ public class HoldoutConfig {
37
39
private Map <String , Holdout > holdoutIdMap ;
38
40
private Map <String , List <Holdout >> flagHoldoutsMap ;
39
41
private Map <String , List <Holdout >> includedHoldouts ;
40
- private Map <String , List <Holdout >> excludedHoldouts ;
42
+ private Map <String , Set <Holdout >> excludedHoldouts ;
41
43
42
44
/**
43
45
* Initializes a new HoldoutConfig with an empty list of holdouts.
@@ -93,7 +95,7 @@ private void updateHoldoutMapping() {
93
95
global .add (holdout );
94
96
95
97
for (String flagId : holdout .getExcludedFlags ()) {
96
- excludedHoldouts .computeIfAbsent (flagId , k -> new ArrayList <>()).add (holdout );
98
+ excludedHoldouts .computeIfAbsent (flagId , k -> new HashSet <>()).add (holdout );
97
99
}
98
100
}
99
101
}
@@ -119,7 +121,7 @@ public List<Holdout> getHoldoutForFlag(@Nonnull String id) {
119
121
120
122
// Prioritize global holdouts first
121
123
List <Holdout > activeHoldouts = new ArrayList <>();
122
- List <Holdout > excluded = excludedHoldouts .getOrDefault (id , Collections .emptyList ());
124
+ Set <Holdout > excluded = excludedHoldouts .getOrDefault (id , Collections .emptySet ());
123
125
124
126
if (!excluded .isEmpty ()) {
125
127
for (Holdout holdout : global ) {
0 commit comments