Skip to content

Commit 9bf8487

Browse files
authored
Fix instances of incorrectly sized Maps and Sets (graphql-java#2798)
Fix a few occurrences where a Map or Set was initialized with an initial capacity value N, and then immediately filled with N items, which would always trigger a resize.
1 parent 2c39728 commit 9bf8487

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package graphql.execution.instrumentation;
22

33
import com.google.common.collect.ImmutableList;
4+
import com.google.common.collect.Maps;
45
import graphql.ExecutionInput;
56
import graphql.ExecutionResult;
67
import graphql.PublicApi;
@@ -210,7 +211,7 @@ private static class ChainedInstrumentationState implements InstrumentationState
210211

211212

212213
private ChainedInstrumentationState(List<Instrumentation> instrumentations, InstrumentationCreateStateParameters parameters) {
213-
instrumentationStates = new LinkedHashMap<>(instrumentations.size());
214+
instrumentationStates = Maps.newLinkedHashMapWithExpectedSize(instrumentations.size());
214215
instrumentations.forEach(i -> instrumentationStates.put(i, i.createState(parameters)));
215216
}
216217

src/main/java/graphql/validation/rules/UniqueArgumentNamesRule.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package graphql.validation.rules;
22

3+
import com.google.common.collect.Sets;
34
import graphql.Internal;
45
import graphql.language.Argument;
56
import graphql.language.Directive;
@@ -10,7 +11,6 @@
1011
import graphql.validation.ValidationErrorCollector;
1112
import graphql.validation.ValidationErrorType;
1213

13-
import java.util.HashSet;
1414
import java.util.List;
1515
import java.util.Set;
1616

@@ -31,7 +31,7 @@ public void checkField(Field field) {
3131
return;
3232
}
3333

34-
Set<String> arguments = new HashSet<>();
34+
Set<String> arguments = Sets.newHashSetWithExpectedSize(field.getArguments().size());
3535

3636
for (Argument argument : field.getArguments()) {
3737
if (arguments.contains(argument.getName())) {
@@ -48,7 +48,7 @@ public void checkDirective(Directive directive, List<Node> ancestors) {
4848
return;
4949
}
5050

51-
Set<String> arguments = new HashSet<>(directive.getArguments().size());
51+
Set<String> arguments = Sets.newHashSetWithExpectedSize(directive.getArguments().size());
5252

5353
for (Argument argument : directive.getArguments()) {
5454
if (arguments.contains(argument.getName())) {

0 commit comments

Comments
 (0)