This is an automated email from the ASF dual-hosted git repository.
JackieTien97 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new a78f5a736c7 [Performance] Pre-size collections with known cardinality
a78f5a736c7 is described below
commit a78f5a736c7e34a951fa1dda34a314fc8a47b7c9
Author: Caideyipi <[email protected]>
AuthorDate: Tue Oct 13 16:46:07 2026 +0800
[Performance] Pre-size collections with known cardinality
---
.../java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java | 8 ++++----
.../main/java/org/apache/iotdb/session/Session.java | 14 +++++++-------
.../org/apache/iotdb/session/SessionConnection.java | 2 +-
.../org/apache/iotdb/session/util/SessionUtils.java | 2 +-
.../operator/SimpleTsBlockWithPositionComparator.java | 2 +-
.../operator/process/FilterAndProjectOperator.java | 6 ++++--
.../operator/process/PatternRecognitionOperator.java | 2 +-
.../process/rowpattern/PatternPartitionExecutor.java | 2 +-
.../process/rowpattern/expression/Computation.java | 2 +-
.../process/rowpattern/expression/NaryComputation.java | 2 +-
.../column/AbstractCaseWhenThenColumnTransformer.java | 2 +-
.../column/multi/LogicalAndMultiColumnTransformer.java | 2 +-
.../column/multi/LogicalOrMultiColumnTransformer.java | 2 +-
.../dag/column/multi/MultiColumnTransformer.java | 2 +-
.../org/apache/iotdb/calc/utils/sort/DiskSpiller.java | 4 ++--
.../consensus/request/write/auth/AuthorTreePlan.java | 4 ++--
.../write/pipe/payload/PipeDeactivateTemplatePlan.java | 4 ++--
.../write/pipe/task/OperateMultiplePipesPlanV2.java | 2 +-
.../subscription/topic/AlterMultipleTopicsPlan.java | 2 +-
.../impl/schema/DeactivateTemplateProcedure.java | 3 ++-
.../procedure/impl/sync/AuthOperationProcedure.java | 2 +-
.../iot/subscription/SubscriptionQueueRegistry.java | 5 +++--
.../exchange/payload/FetchCombineResultRequest.java | 2 +-
.../iotdb/db/queryengine/common/TimeseriesContext.java | 4 +++-
.../fragment/FragmentInstanceFailureInfo.java | 4 ++--
.../execution/operator/process/TransformOperator.java | 2 +-
.../plan/expression/multi/FunctionExpression.java | 4 ++--
.../expression/visitor/ColumnTransformerVisitor.java | 6 ++++--
.../visitor/CompleteMeasurementSchemaVisitor.java | 2 +-
.../expression/visitor/IntermediateLayerVisitor.java | 3 ++-
.../node/metadata/read/LevelTimeSeriesCountNode.java | 4 ++--
.../node/metadata/read/SeriesSchemaFetchScanNode.java | 4 ++--
.../plan/node/metadata/read/TimeSeriesCountNode.java | 4 ++--
.../node/metadata/read/TimeSeriesSchemaScanNode.java | 4 ++--
.../metadata/write/CreateAlignedTimeSeriesNode.java | 14 +++++++-------
.../plan/node/metadata/write/MeasurementGroup.java | 14 +++++++-------
.../plan/planner/plan/node/sink/IdentitySinkNode.java | 2 +-
.../plan/planner/plan/node/sink/ShuffleSinkNode.java | 2 +-
.../node/source/AlignedSeriesAggregationScanNode.java | 3 ++-
.../planner/plan/node/source/DeviceRegionScanNode.java | 3 ++-
.../plan/node/source/SeriesAggregationScanNode.java | 3 ++-
.../plan/node/source/TimeseriesRegionScanNode.java | 10 ++++++----
.../plan/node/write/InsertMultiTabletsNode.java | 5 ++---
.../plan/planner/plan/node/write/InsertRowsNode.java | 5 ++---
.../plan/node/write/RelationalInsertRowsNode.java | 5 ++---
.../plan/parameter/model/ModelInferenceDescriptor.java | 4 ++--
.../schema/TableDeviceAttributeCommitUpdateNode.java | 4 ++--
.../logfile/visitor/SchemaRegionPlanDeserializer.java | 18 +++++++++---------
.../dataregion/memtable/AbstractMemTable.java | 4 ++--
.../dataregion/memtable/AlignedWritableMemChunk.java | 2 +-
.../dataregion/memtable/WritableMemChunk.java | 2 +-
.../tsfile/timeindex/ArrayDeviceTimeIndex.java | 4 ++--
.../tsfile/timeindex/PlainDeviceTimeIndex.java | 4 ++--
.../storageengine/load/splitter/AlignedChunkData.java | 4 ++--
.../org/apache/iotdb/commons/auth/entity/Role.java | 2 +-
.../iotdb/commons/auth/role/LocalFileRoleAccessor.java | 2 +-
.../consensus/index/impl/StateProgressIndex.java | 5 +++--
.../disk/strategy/RandomOnDiskUsableSpaceStrategy.java | 2 +-
.../iotdb/commons/model/ModelHyperparameter.java | 2 +-
.../org/apache/iotdb/commons/path/AlignedPath.java | 4 ++--
.../org/apache/iotdb/commons/path/PartialPath.java | 2 +-
.../org/apache/iotdb/commons/path/PathPatternNode.java | 4 ++--
.../IoTConsensusV2TransferFileSealWithModReq.java | 10 +++++-----
.../thrift/request/PipeTransferFileSealReqV2.java | 8 ++++----
.../thrift/request/PipeTransferHandshakeV2Req.java | 4 ++--
.../planner/rowpattern/LogicalIndexPointer.java | 4 ++--
.../plan/relational/sql/ast/InListExpression.java | 2 +-
.../multichildren/AbstractMultiChildrenFilter.java | 2 +-
.../commons/schema/filter/impl/values/InFilter.java | 4 ++--
.../viewExpression/multi/FunctionViewExpression.java | 4 ++--
.../java/org/apache/iotdb/commons/utils/AuthUtils.java | 2 +-
.../iotdb/commons/utils/BasicStructureSerDeUtil.java | 15 ++++++++-------
.../org/apache/iotdb/library/dprofile/UDTFSegment.java | 2 +-
.../apache/iotdb/library/match/PatternExecutor.java | 6 +++---
74 files changed, 165 insertions(+), 152 deletions(-)
diff --git
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
index b4516efa7c8..7ec09bce042 100644
---
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
+++
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
@@ -112,8 +112,8 @@ public class IoTDBJDBCDataSet {
this.zoneId = zoneId;
columnSize = columnNameList.size();
- this.columnNameList = new ArrayList<>();
- this.columnTypeList = new ArrayList<>();
+ this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 :
1));
+ this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 :
1));
if (!ignoreTimeStamp) {
this.columnNameList.add(TIMESTAMP_STR);
this.columnTypeList.add(String.valueOf(TSDataType.INT64));
@@ -191,8 +191,8 @@ public class IoTDBJDBCDataSet {
this.zoneId = zoneId;
columnSize = columnNameList.size();
- this.columnNameList = new ArrayList<>();
- this.columnTypeList = new ArrayList<>();
+ this.columnNameList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 :
1));
+ this.columnTypeList = new ArrayList<>(columnSize + (ignoreTimeStamp ? 0 :
1));
if (!ignoreTimeStamp) {
this.columnNameList.add(TIMESTAMP_STR);
this.columnTypeList.add(String.valueOf(TSDataType.INT64));
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index 5d20754fff4..fe9fb38f6db 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -2648,7 +2648,7 @@ public class Session implements ISession {
List<List<TSDataType>> typesList,
List<List<String>> measurementsList)
throws IoTDBConnectionException {
- List<ByteBuffer> buffersList = new ArrayList<>();
+ List<ByteBuffer> buffersList = new ArrayList<>(valuesList.size());
for (int i = 0; i < valuesList.size(); i++) {
ByteBuffer buffer =
SessionUtils.getValueBuffer(typesList.get(i), valuesList.get(i),
measurementsList.get(i));
@@ -2879,7 +2879,7 @@ public class Session implements ISession {
(k, v) -> {
if (v == null) {
List<String> measurements = new
ArrayList<>(tablet.getSchemas().size());
- List<TSDataType> dataTypes = new ArrayList<>();
+ List<TSDataType> dataTypes = new
ArrayList<>(tablet.getSchemas().size());
tablet
.getSchemas()
.forEach(
@@ -3289,8 +3289,8 @@ public class Session implements ISession {
return;
}
request.addToPrefixPaths(filtered.getDeviceId());
- List<String> measurements = new ArrayList<>();
- List<Integer> dataTypes = new ArrayList<>();
+ List<String> measurements = new ArrayList<>(filtered.getSchemas().size());
+ List<Integer> dataTypes = new ArrayList<>(filtered.getSchemas().size());
request.setIsAligned(isAligned);
for (IMeasurementSchema measurementSchema : filtered.getSchemas()) {
if (measurementSchema.getMeasurementName() == null) {
@@ -3980,9 +3980,9 @@ public class Session implements ISession {
List<List<TSEncoding>> encodings,
List<CompressionType> compressors)
throws IoTDBConnectionException, StatementExecutionException {
- List<String> flatMeasurements = new ArrayList<>();
- List<TSDataType> flatDataTypes = new ArrayList<>();
- List<TSEncoding> flatEncodings = new ArrayList<>();
+ List<String> flatMeasurements = new ArrayList<>(measurements.size());
+ List<TSDataType> flatDataTypes = new ArrayList<>(measurements.size());
+ List<TSEncoding> flatEncodings = new ArrayList<>(measurements.size());
for (int idx = 0; idx < measurements.size(); idx++) {
flatMeasurements.add(measurements.get(idx).get(0));
flatDataTypes.add(dataTypes.get(idx).get(0));
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
index 6f26246845f..89c9113b988 100644
---
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
+++
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java
@@ -1352,7 +1352,7 @@ public class SessionConnection {
if (endPointList == null) {
return MSG_RECONNECTION_FAIL;
}
- List<String> urls = new ArrayList<>();
+ List<String> urls = new ArrayList<>(endPointList.size());
for (TEndPoint end : endPointList) {
urls.add(UrlUtils.convertTEndPointIpv4AndIpv6Url(end));
}
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
index d6ff4d735ae..5203fffd915 100644
---
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
+++
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
@@ -296,7 +296,7 @@ public class SessionUtils {
if (nodeUrls == null) {
throw new NumberFormatException(SessionMessages.NODE_URLS_IS_NULL);
}
- List<TEndPoint> endPointsList = new ArrayList<>();
+ List<TEndPoint> endPointsList = new ArrayList<>(nodeUrls.size());
for (String nodeUrl : nodeUrls) {
try {
endPointsList.add(UrlUtils.parseTEndPointIpv4AndIpv6Url(nodeUrl));
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java
index 8cab1352032..5a068c53371 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/SimpleTsBlockWithPositionComparator.java
@@ -36,7 +36,7 @@ public class SimpleTsBlockWithPositionComparator implements
TsBlockWithPositionC
public SimpleTsBlockWithPositionComparator(
List<TSDataType> types, List<Integer> sortChannels, List<SortOrder>
sortOrders) {
- List<TSDataType> sortedTypes = new ArrayList<>();
+ List<TSDataType> sortedTypes = new ArrayList<>(sortChannels.size());
for (Integer sortChannel : sortChannels) {
sortedTypes.add(types.get(sortChannel));
}
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java
index 5ab7e58a696..67d0d69874a 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/FilterAndProjectOperator.java
@@ -164,7 +164,9 @@ public class FilterAndProjectOperator implements
ProcessOperator {
// reuse this builder
filterTsBlockBuilder.reset();
- List<Column> resultColumns = new ArrayList<>();
+ List<Column> resultColumns =
+ new ArrayList<>(
+ input.getValueColumnCount() + (hasNonMappableUDF ? 0 :
commonTransformerList.size()));
for (int i = 0, n = input.getValueColumnCount(); i < n; i++) {
resultColumns.add(input.getColumn(i));
}
@@ -268,7 +270,7 @@ public class FilterAndProjectOperator implements
ProcessOperator {
leafColumnTransformer.initFromTsBlock(input);
}
- List<Column> resultColumns = new ArrayList<>();
+ List<Column> resultColumns = new
ArrayList<>(projectOutputTransformerList.size());
for (ColumnTransformer columnTransformer : projectOutputTransformerList) {
columnTransformer.tryEvaluate();
resultColumns.add(columnTransformer.getColumn());
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java
index d0ee968c0e5..28c184eb17d 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/PatternRecognitionOperator.java
@@ -117,7 +117,7 @@ public class PatternRecognitionOperator implements
ProcessOperator {
// Partition Part
this.partitionChannels = ImmutableList.copyOf(partitionChannels);
// Acquire partition channels' data types
- List<TSDataType> partitionDataTypes = new ArrayList<>();
+ List<TSDataType> partitionDataTypes = new
ArrayList<>(partitionChannels.size());
for (Integer channel : partitionChannels) {
partitionDataTypes.add(inputDataTypes.get(channel));
}
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java
index 82637f82125..4d475fbf405 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/PatternPartitionExecutor.java
@@ -118,7 +118,7 @@ public final class PatternPartitionExecutor {
this.matchNumber = 1;
// Prepare for peer group comparing
- List<TSDataType> sortDataTypes = new ArrayList<>();
+ List<TSDataType> sortDataTypes = new ArrayList<>(sortChannels.size());
for (int channel : sortChannels) {
TSDataType dataType = dataTypes.get(channel);
sortDataTypes.add(dataType);
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java
index 59de959cd7c..860f8812d4f 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/Computation.java
@@ -108,7 +108,7 @@ public abstract class Computation {
return new BinaryComputation(left, right, op);
} else if (expression instanceof LogicalExpression) {
LogicalExpression logicalExpr = (LogicalExpression) expression;
- List<Computation> computations = new ArrayList<>();
+ List<Computation> computations = new
ArrayList<>(logicalExpr.getTerms().size());
for (Expression term : logicalExpr.getTerms()) {
computations.add(parse(term, counter, symbolToIndex));
}
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java
index b077ccd1b35..c7862f1a524 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/execution/operator/process/rowpattern/expression/NaryComputation.java
@@ -33,7 +33,7 @@ public class NaryComputation extends Computation {
@Override
public Object evaluate(List<Object> values) {
- List<Object> operandValues = new ArrayList<>();
+ List<Object> operandValues = new ArrayList<>(terms.size());
for (Computation term : terms) {
operandValues.add(term.evaluate(values));
}
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java
index 5603bde031d..8452a590a25 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/AbstractCaseWhenThenColumnTransformer.java
@@ -46,7 +46,7 @@ public abstract class AbstractCaseWhenThenColumnTransformer
extends ColumnTransf
whenTransformers.size() == thenTransformers.size(),
CalcMessages
.EXCEPTION_THE_SIZE_BETWEEN_WHENTRANSFORMERS_AND_THENTRANSFORMERS_NEEDS_TO_BE_SAME_AC796883);
- this.whenThenTransformers = new ArrayList<>();
+ this.whenThenTransformers = new ArrayList<>(whenTransformers.size());
for (int i = 0; i < whenTransformers.size(); i++) {
this.whenThenTransformers.add(new Pair<>(whenTransformers.get(i),
thenTransformers.get(i)));
}
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java
index 7e8dce8502e..0510ce0c194 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalAndMultiColumnTransformer.java
@@ -40,7 +40,7 @@ public class LogicalAndMultiColumnTransformer extends
LogicalMultiColumnTransfor
boolean[] selectionCopy = selection.clone();
boolean[] hasNull = new boolean[selection.length];
- List<Column> childrenColumns = new ArrayList<>();
+ List<Column> childrenColumns = new
ArrayList<>(columnTransformerList.size());
for (ColumnTransformer child : columnTransformerList) {
child.evaluateWithSelection(selectionCopy);
Column childColumn = child.getColumn();
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java
index 32694820013..b754de9f13a 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/LogicalOrMultiColumnTransformer.java
@@ -40,7 +40,7 @@ public class LogicalOrMultiColumnTransformer extends
LogicalMultiColumnTransform
boolean[] selectionCopy = selection.clone();
boolean[] hasNull = new boolean[selection.length];
- List<Column> childColumns = new ArrayList<>();
+ List<Column> childColumns = new ArrayList<>(columnTransformerList.size());
for (ColumnTransformer child : columnTransformerList) {
child.evaluateWithSelection(selectionCopy);
Column childColumn = child.getColumn();
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java
index 09cb1530bc4..827836a39cc 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/transformation/dag/column/multi/MultiColumnTransformer.java
@@ -61,7 +61,7 @@ public abstract class MultiColumnTransformer extends
ColumnTransformer {
@Override
public void evaluateWithSelection(boolean[] selection) {
- List<Column> childrenColumns = new ArrayList<>();
+ List<Column> childrenColumns = new
ArrayList<>(columnTransformerList.size());
for (ColumnTransformer child : columnTransformerList) {
child.evaluateWithSelection(selection);
diff --git
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java
index cdda259e2b0..cc7d91b3092 100644
---
a/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java
+++
b/iotdb-core/calc-commons/src/main/java/org/apache/iotdb/calc/utils/sort/DiskSpiller.java
@@ -155,7 +155,7 @@ public abstract class DiskSpiller {
}
private List<String> getFilePaths() {
- List<String> filePaths = new ArrayList<>();
+ List<String> filePaths = new ArrayList<>(fileIndex);
for (int i = 0; i < fileIndex; i++) {
filePaths.add(filePrefix + String.format("%05d", i) + FILE_SUFFIX);
}
@@ -164,7 +164,7 @@ public abstract class DiskSpiller {
public List<SortReader> getReaders(SortBufferManager sortBufferManager)
throws IoTDBException {
List<String> filePaths = getFilePaths();
- List<SortReader> sortReaders = new ArrayList<>();
+ List<SortReader> sortReaders = new ArrayList<>(filePaths.size());
try {
for (String filePath : filePaths) {
sortReaders.add(new FileSpillerReader(filePath, sortBufferManager,
serde));
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java
index a1f5a6d3c97..3775e20c824 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/auth/AuthorTreePlan.java
@@ -24,13 +24,13 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
+import com.google.common.collect.Sets;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -244,7 +244,7 @@ public class AuthorTreePlan extends AuthorPlan {
this.permissions = null;
} else {
int permissionsSize = buffer.getInt();
- this.permissions = new HashSet<>();
+ this.permissions = Sets.newHashSetWithExpectedSize(permissionsSize);
for (int i = 0; i < permissionsSize; i++) {
permissions.add(buffer.getInt());
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
index 6b09f7c9fef..e71aad9d92d 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/payload/PipeDeactivateTemplatePlan.java
@@ -25,13 +25,13 @@ import org.apache.iotdb.commons.schema.template.Template;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -69,7 +69,7 @@ public class PipeDeactivateTemplatePlan extends
ConfigPhysicalPlan {
@Override
protected void deserializeImpl(final ByteBuffer buffer) throws IOException {
final int size = ReadWriteIOUtils.readInt(buffer);
- templateSetInfo = new HashMap<>();
+ templateSetInfo = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; i++) {
final PartialPath pattern = (PartialPath)
PathDeserializeUtil.deserialize(buffer);
final int templateNum = ReadWriteIOUtils.readInt(buffer);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
index d41e126101b..324d9603736 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/task/OperateMultiplePipesPlanV2.java
@@ -77,8 +77,8 @@ public class OperateMultiplePipesPlanV2 extends
ConfigPhysicalPlan {
@Override
protected void deserializeImpl(ByteBuffer buffer) throws IOException {
if (ReadWriteIOUtils.readBool(buffer)) {
- subPlans = new ArrayList<>();
int size = ReadWriteIOUtils.readInt(buffer);
+ subPlans = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
final boolean isLastSubPlan = i == size - 1;
short type = ReadWriteIOUtils.readShort(buffer);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
index d3dd66439f6..62e674b43d1 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/subscription/topic/AlterMultipleTopicsPlan.java
@@ -65,8 +65,8 @@ public class AlterMultipleTopicsPlan extends
ConfigPhysicalPlan {
@Override
protected void deserializeImpl(ByteBuffer buffer) throws IOException {
if (ReadWriteIOUtils.readBool(buffer)) {
- subPlans = new ArrayList<>();
int size = ReadWriteIOUtils.readInt(buffer);
+ subPlans = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
// This will read the type of the plan (AlterTopicPlan), which will be
ignored
ReadWriteIOUtils.readShort(buffer);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
index b2875b7fc41..828ec9d8d6d 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeactivateTemplateProcedure.java
@@ -49,6 +49,7 @@ import
org.apache.iotdb.mpp.rpc.thrift.TRollbackSchemaBlackListWithTemplateReq;
import org.apache.iotdb.pipe.api.exception.PipeException;
import org.apache.iotdb.rpc.TSStatusCode;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -384,7 +385,7 @@ public class DeactivateTemplateProcedure
super.deserialize(byteBuffer);
queryId = ReadWriteIOUtils.readString(byteBuffer);
int size = ReadWriteIOUtils.readInt(byteBuffer);
- Map<PartialPath, List<Template>> templateSetInfo = new HashMap<>();
+ Map<PartialPath, List<Template>> templateSetInfo =
Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; i++) {
PartialPath pattern = (PartialPath)
PathDeserializeUtil.deserialize(byteBuffer);
int templateNum = ReadWriteIOUtils.readInt(byteBuffer);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
index e3ff2c08188..bf37a6de803 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/sync/AuthOperationProcedure.java
@@ -220,7 +220,7 @@ public class AuthOperationProcedure extends
AbstractNodeProcedure<AuthOperationP
public void deserialize(ByteBuffer byteBuffer) {
super.deserialize(byteBuffer);
int size = ReadWriteIOUtils.readInt(byteBuffer);
- this.datanodes = new ArrayList<>();
+ this.datanodes = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
TDataNodeConfiguration datanode =
ThriftCommonsSerDeUtils.deserializeTDataNodeConfiguration(byteBuffer);
diff --git
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java
index 0cc06eeff52..d2de8f93fd9 100644
---
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java
+++
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/subscription/SubscriptionQueueRegistry.java
@@ -88,7 +88,8 @@ public class SubscriptionQueueRegistry {
}
public synchronized Collection<SubscriptionWalRetentionPolicy>
getRetentionPolicies() {
- final Collection<SubscriptionWalRetentionPolicy> retentionPolicies = new
ArrayList<>();
+ final Collection<SubscriptionWalRetentionPolicy> retentionPolicies =
+ new ArrayList<>(queues.size());
for (final SubscriptionQueueRegistration registration : queues.values()) {
retentionPolicies.add(registration.retentionPolicy);
}
@@ -103,7 +104,7 @@ public class SubscriptionQueueRegistry {
}
}
- final Collection<Long> retainedMinVersionIds = new ArrayList<>();
+ final Collection<Long> retainedMinVersionIds = new
ArrayList<>(suppliers.size());
for (final LongSupplier supplier : suppliers) {
retainedMinVersionIds.add(supplier.getAsLong());
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java
index 03f8721f17b..97d6c4503e6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/twostage/exchange/payload/FetchCombineResultRequest.java
@@ -91,8 +91,8 @@ public class FetchCombineResultRequest extends
TPipeTransferReq {
private FetchCombineResultRequest
translateFromTPipeTransferReq(TPipeTransferReq transferReq) {
pipeName = ReadWriteIOUtils.readString(transferReq.body);
creationTime = ReadWriteIOUtils.readLong(transferReq.body);
- combineIdList = new ArrayList<>();
final int combineIdListSize = ReadWriteIOUtils.readInt(transferReq.body);
+ combineIdList = new ArrayList<>(combineIdListSize);
for (int i = 0; i < combineIdListSize; i++) {
combineIdList.add(ReadWriteIOUtils.readString(transferReq.body));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java
index ecad26bac00..143cdacb798 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/common/TimeseriesContext.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.common;
import
org.apache.iotdb.db.queryengine.common.schematree.IMeasurementSchemaInfo;
import org.apache.iotdb.db.schemaengine.schemaregion.utils.MetaUtils;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.Pair;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -389,7 +390,8 @@ public class TimeseriesContext {
int activeCountMultiplier = ReadWriteIOUtils.readInt(buffer);
boolean logicalView = ReadWriteIOUtils.readBool(buffer);
int activeLogicalViewContextMapSize = ReadWriteIOUtils.readInt(buffer);
- Map<String, TimeseriesContext> activeLogicalViewContextMap = new
HashMap<>();
+ Map<String, TimeseriesContext> activeLogicalViewContextMap =
+ Maps.newHashMapWithExpectedSize(activeLogicalViewContextMapSize);
for (int i = 0; i < activeLogicalViewContextMapSize; i++) {
activeLogicalViewContextMap.put(
ReadWriteIOUtils.readString(buffer),
TimeseriesContext.deserialize(buffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
index 84465e4ca75..c333e49a9a3 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java
@@ -166,8 +166,6 @@ public class FragmentInstanceFailureInfo implements
Serializable {
public static FragmentInstanceFailureInfo deserialize(ByteBuffer byteBuffer)
{
final String message = ReadWriteIOUtils.readString(byteBuffer);
FragmentInstanceFailureInfo cause;
- List<FragmentInstanceFailureInfo> suppressed = new ArrayList<>();
- List<String> stack = new ArrayList<>();
int flag = ReadWriteIOUtils.readInt(byteBuffer);
if (flag == 0) {
cause = null;
@@ -175,10 +173,12 @@ public class FragmentInstanceFailureInfo implements
Serializable {
cause = deserialize(byteBuffer);
}
int suppressedSize = ReadWriteIOUtils.readInt(byteBuffer);
+ List<FragmentInstanceFailureInfo> suppressed = new
ArrayList<>(suppressedSize);
for (int i = 0; i < suppressedSize; i++) {
suppressed.add(deserialize(byteBuffer));
}
int stackSize = ReadWriteIOUtils.readInt(byteBuffer);
+ List<String> stack = new ArrayList<>(stackSize);
for (int i = 0; i < stackSize; i++) {
stack.add(ReadWriteIOUtils.readString(byteBuffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
index e2c7984b499..9a4526c5bfe 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/TransformOperator.java
@@ -288,7 +288,7 @@ public class TransformOperator implements ProcessOperator {
protected void prepareTsBlockBuilder(TsBlockBuilder tsBlockBuilder) {
if (outputDataTypes == null) {
- outputDataTypes = new ArrayList<>();
+ outputDataTypes = new ArrayList<>(transformers.length);
for (LayerReader reader : transformers) {
outputDataTypes.add(reader.getDataTypes()[0]);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
index f977a24a1bb..a1b860880da 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/multi/FunctionExpression.java
@@ -110,7 +110,7 @@ public class FunctionExpression extends Expression {
functionAttributes = ReadWriteIOUtils.readLinkedHashMap(byteBuffer);
int expressionSize = ReadWriteIOUtils.readInt(byteBuffer);
- expressions = new ArrayList<>();
+ expressions = new ArrayList<>(expressionSize);
for (int i = 0; i < expressionSize; i++) {
expressions.add(Expression.deserialize(byteBuffer));
}
@@ -305,7 +305,7 @@ public class FunctionExpression extends Expression {
public List<PartialPath> getPaths() {
if (paths == null) {
- paths = new ArrayList<>();
+ paths = new ArrayList<>(expressions.size());
for (Expression expression : expressions) {
paths.add(
expression instanceof TimeSeriesOperand
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
index 17871eda0b1..561358eecf5 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ColumnTransformerVisitor.java
@@ -387,8 +387,10 @@ public class ColumnTransformerVisitor
context.inputDataTypes.add(context.getType(caseWhenThenExpression));
context.cache.put(caseWhenThenExpression, identity);
} else {
- List<ColumnTransformer> whenList = new ArrayList<>();
- List<ColumnTransformer> thenList = new ArrayList<>();
+ List<ColumnTransformer> whenList =
+ new
ArrayList<>(caseWhenThenExpression.getWhenThenExpressions().size());
+ List<ColumnTransformer> thenList =
+ new
ArrayList<>(caseWhenThenExpression.getWhenThenExpressions().size());
for (WhenThenExpression whenThenExpression :
caseWhenThenExpression.getWhenThenExpressions()) {
whenList.add(this.process(whenThenExpression.getWhen(), context));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java
index bac3b533f0c..341b8eee635 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java
@@ -78,7 +78,7 @@ public class CompleteMeasurementSchemaVisitor extends
ExpressionVisitor<Expressi
public Expression visitFunctionExpression(
FunctionExpression functionExpression, ISchemaTree schemaTree) {
List<Expression> children = functionExpression.getExpressions();
- List<Expression> replacedChildren = new ArrayList<>();
+ List<Expression> replacedChildren = new ArrayList<>(children.size());
for (Expression child : children) {
replacedChildren.add(this.process(child, schemaTree));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
index 90109818be8..60d85f050e8 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/IntermediateLayerVisitor.java
@@ -428,7 +428,8 @@ public class IntermediateLayerVisitor
private IntermediateLayer constructUdfInputIntermediateLayer(
FunctionExpression functionExpression, IntermediateLayerVisitorContext
context) {
- List<IntermediateLayer> intermediateLayers = new ArrayList<>();
+ List<IntermediateLayer> intermediateLayers =
+ new ArrayList<>(functionExpression.getExpressions().size());
for (Expression expression : functionExpression.getExpressions()) {
intermediateLayers.add(this.process(expression, context));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java
index b0e1e682ad7..073c17df26b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/LevelTimeSeriesCountNode.java
@@ -31,6 +31,7 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilter;
import org.apache.iotdb.commons.schema.template.Template;
import org.apache.iotdb.db.i18n.DataNodeQueryMessages;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import jakarta.validation.constraints.NotNull;
@@ -38,7 +39,6 @@ import jakarta.validation.constraints.NotNull;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -163,7 +163,7 @@ public class LevelTimeSeriesCountNode extends
SchemaQueryScanNode {
boolean includeSystemDatabase = ReadWriteIOUtils.readBool(buffer);
boolean includeAuditDatabase = ReadWriteIOUtils.readBool(buffer);
int templateNum = ReadWriteIOUtils.readInt(buffer);
- Map<Integer, Template> templateMap = new HashMap<>();
+ Map<Integer, Template> templateMap =
Maps.newHashMapWithExpectedSize(templateNum);
Template template;
for (int i = 0; i < templateNum; i++) {
template = new Template();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java
index 4509ebdc6f6..9b0a40636c4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/SeriesSchemaFetchScanNode.java
@@ -30,12 +30,12 @@ import org.apache.iotdb.commons.schema.template.Template;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.Map;
/** This class defines the scan task of schema fetcher. */
@@ -131,7 +131,7 @@ public class SeriesSchemaFetchScanNode extends
SchemaFetchScanNode {
PathPatternTree patternTree = PathPatternTree.deserialize(byteBuffer);
int templateNum = ReadWriteIOUtils.readInt(byteBuffer);
- Map<Integer, Template> templateMap = new HashMap<>();
+ Map<Integer, Template> templateMap =
Maps.newHashMapWithExpectedSize(templateNum);
Template template;
for (int i = 0; i < templateNum; i++) {
template = new Template();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java
index 2dafac1779f..1158de6c208 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesCountNode.java
@@ -32,6 +32,7 @@ import org.apache.iotdb.commons.schema.filter.SchemaFilter;
import org.apache.iotdb.commons.schema.template.Template;
import org.apache.iotdb.db.i18n.DataNodeQueryMessages;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import jakarta.validation.constraints.NotNull;
@@ -39,7 +40,6 @@ import jakarta.validation.constraints.NotNull;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -158,7 +158,7 @@ public class TimeSeriesCountNode extends
SchemaQueryScanNode {
boolean includeAuditDatabase = ReadWriteIOUtils.readBool(buffer);
int templateNum = ReadWriteIOUtils.readInt(buffer);
- Map<Integer, Template> templateMap = new HashMap<>();
+ Map<Integer, Template> templateMap =
Maps.newHashMapWithExpectedSize(templateNum);
Template template;
for (int i = 0; i < templateNum; i++) {
template = new Template();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java
index 5a035d31c54..819153b7b57 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/read/TimeSeriesSchemaScanNode.java
@@ -32,6 +32,7 @@ import org.apache.iotdb.commons.schema.template.Template;
import org.apache.iotdb.db.i18n.DataNodeQueryMessages;
import org.apache.iotdb.db.queryengine.plan.statement.component.Ordering;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import jakarta.validation.constraints.NotNull;
@@ -39,7 +40,6 @@ import jakarta.validation.constraints.NotNull;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -157,7 +157,7 @@ public class TimeSeriesSchemaScanNode extends
SchemaQueryScanNode {
}
int templateNum = ReadWriteIOUtils.readInt(byteBuffer);
- Map<Integer, Template> templateMap = new HashMap<>();
+ Map<Integer, Template> templateMap =
Maps.newHashMapWithExpectedSize(templateNum);
Template template;
for (int i = 0; i < templateNum; i++) {
template = new Template();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java
index e9c57024647..f4bc37a0cee 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/CreateAlignedTimeSeriesNode.java
@@ -221,30 +221,30 @@ public class CreateAlignedTimeSeriesNode extends
WritePlanNode
DataNodeQueryMessages.CAN_NOT_DESERIALIZE_CREATEALIGNEDTIMESERIESNODE, e);
}
- measurements = new ArrayList<>();
int size = byteBuffer.getInt();
+ measurements = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
measurements.add(ReadWriteIOUtils.readString(byteBuffer));
}
- dataTypes = new ArrayList<>();
+ dataTypes = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
dataTypes.add(TSDataType.values()[byteBuffer.get()]);
}
- encodings = new ArrayList<>();
+ encodings = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
encodings.add(TSEncoding.values()[byteBuffer.get()]);
}
- compressors = new ArrayList<>();
+ compressors = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
compressors.add(CompressionType.deserialize(byteBuffer.get()));
}
byte label = byteBuffer.get();
if (label >= 0) {
- aliasList = new ArrayList<>();
+ aliasList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
aliasList.add(ReadWriteIOUtils.readString(byteBuffer));
@@ -254,7 +254,7 @@ public class CreateAlignedTimeSeriesNode extends
WritePlanNode
label = byteBuffer.get();
if (label >= 0) {
- tagsList = new ArrayList<>();
+ tagsList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
tagsList.add(ReadWriteIOUtils.readMap(byteBuffer));
@@ -264,7 +264,7 @@ public class CreateAlignedTimeSeriesNode extends
WritePlanNode
label = byteBuffer.get();
if (label >= 0) {
- attributesList = new ArrayList<>();
+ attributesList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
attributesList.add(ReadWriteIOUtils.readMap(byteBuffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
index 8667f6e21e1..699b904b669 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
@@ -341,31 +341,31 @@ public class MeasurementGroup {
}
public void deserialize(ByteBuffer byteBuffer) {
- measurements = new ArrayList<>();
int size = byteBuffer.getInt();
+ measurements = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
measurements.add(ReadWriteIOUtils.readString(byteBuffer));
}
measurementSet.addAll(measurements);
- dataTypes = new ArrayList<>();
+ dataTypes = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
dataTypes.add(TSDataType.values()[byteBuffer.get()]);
}
- encodings = new ArrayList<>();
+ encodings = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
encodings.add(TSEncoding.values()[byteBuffer.get()]);
}
- compressors = new ArrayList<>();
+ compressors = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
compressors.add(CompressionType.deserialize(byteBuffer.get()));
}
byte label = byteBuffer.get();
if (label >= 0) {
- aliasList = new ArrayList<>();
+ aliasList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
aliasList.add(ReadWriteIOUtils.readString(byteBuffer));
@@ -375,7 +375,7 @@ public class MeasurementGroup {
label = byteBuffer.get();
if (label >= 0) {
- tagsList = new ArrayList<>();
+ tagsList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
tagsList.add(ReadWriteIOUtils.readMap(byteBuffer));
@@ -385,7 +385,7 @@ public class MeasurementGroup {
label = byteBuffer.get();
if (label >= 0) {
- attributesList = new ArrayList<>();
+ attributesList = new ArrayList<>(label == 1 ? size : 0);
if (label == 1) {
for (int i = 0; i < size; i++) {
attributesList.add(ReadWriteIOUtils.readMap(byteBuffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
index 6ce7fb1e2a7..c59a22f7f05 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/IdentitySinkNode.java
@@ -101,7 +101,7 @@ public class IdentitySinkNode extends MultiChildrenSinkNode
{
public static IdentitySinkNode deserialize(ByteBuffer byteBuffer) {
int size = ReadWriteIOUtils.readInt(byteBuffer);
- List<DownStreamChannelLocation> downStreamChannelLocationList = new
ArrayList<>();
+ List<DownStreamChannelLocation> downStreamChannelLocationList = new
ArrayList<>(size);
for (int i = 0; i < size; i++) {
downStreamChannelLocationList.add(DownStreamChannelLocation.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
index 8348d2d4644..b3804b355f6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/sink/ShuffleSinkNode.java
@@ -100,7 +100,7 @@ public class ShuffleSinkNode extends MultiChildrenSinkNode {
public static ShuffleSinkNode deserialize(ByteBuffer byteBuffer) {
int size = ReadWriteIOUtils.readInt(byteBuffer);
- List<DownStreamChannelLocation> downStreamChannelLocationList = new
ArrayList<>();
+ List<DownStreamChannelLocation> downStreamChannelLocationList = new
ArrayList<>(size);
for (int i = 0; i < size; i++) {
downStreamChannelLocationList.add(DownStreamChannelLocation.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
index 5c783ec88e9..463f0375a39 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesAggregationScanNode.java
@@ -251,7 +251,8 @@ public class AlignedSeriesAggregationScanNode extends
SeriesAggregationSourceNod
public static AlignedSeriesAggregationScanNode deserialize(ByteBuffer
byteBuffer) {
AlignedPath alignedPath = (AlignedPath)
PathDeserializeUtil.deserialize(byteBuffer);
int aggregateDescriptorSize = ReadWriteIOUtils.readInt(byteBuffer);
- List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>();
+ List<AggregationDescriptor> aggregationDescriptorList =
+ new ArrayList<>(aggregateDescriptorSize);
for (int i = 0; i < aggregateDescriptorSize; i++) {
aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java
index af96dcc0878..3574fa859f5 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/DeviceRegionScanNode.java
@@ -34,6 +34,7 @@ import
org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeUtil;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
@@ -105,7 +106,7 @@ public class DeviceRegionScanNode extends RegionScanNode {
public static PlanNode deserialize(ByteBuffer buffer) {
int size = ReadWriteIOUtils.readInt(buffer);
- Map<PartialPath, DeviceContext> devicePathToContextMap = new HashMap<>();
+ Map<PartialPath, DeviceContext> devicePathToContextMap =
Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; i++) {
PartialPath path = (PartialPath) PathDeserializeUtil.deserialize(buffer);
devicePathToContextMap.put(path, DeviceContext.deserialize(buffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
index dd0fd381806..ac67601d849 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesAggregationScanNode.java
@@ -241,7 +241,8 @@ public class SeriesAggregationScanNode extends
SeriesAggregationSourceNode {
public static SeriesAggregationScanNode deserialize(ByteBuffer byteBuffer) {
MeasurementPath partialPath = (MeasurementPath)
PathDeserializeUtil.deserialize(byteBuffer);
int aggregateDescriptorSize = ReadWriteIOUtils.readInt(byteBuffer);
- List<AggregationDescriptor> aggregationDescriptorList = new ArrayList<>();
+ List<AggregationDescriptor> aggregationDescriptorList =
+ new ArrayList<>(aggregateDescriptorSize);
for (int i = 0; i < aggregateDescriptorSize; i++) {
aggregationDescriptorList.add(AggregationDescriptor.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java
index 24bcf288403..397ccba0f24 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/TimeseriesRegionScanNode.java
@@ -36,6 +36,7 @@ import
org.apache.iotdb.db.queryengine.common.TimeseriesContext;
import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import org.apache.tsfile.write.schema.IMeasurementSchema;
import org.apache.tsfile.write.schema.MeasurementSchema;
@@ -145,11 +146,12 @@ public class TimeseriesRegionScanNode extends
RegionScanNode {
PartialPath devicePath = new PartialPath(nodes);
int pathSize = ReadWriteIOUtils.readInt(buffer);
- Map<PartialPath, List<TimeseriesContext>> measurementToSchemaInfo = new
HashMap<>();
+ Map<PartialPath, List<TimeseriesContext>> measurementToSchemaInfo =
+ Maps.newHashMapWithExpectedSize(pathSize);
for (int j = 0; j < pathSize; j++) {
PartialPath path = deserializePartialPath(nodes, buffer);
int schemaSize = ReadWriteIOUtils.readInt(buffer);
- List<TimeseriesContext> schemaInfos = new ArrayList<>();
+ List<TimeseriesContext> schemaInfos = new ArrayList<>(schemaSize);
for (int k = 0; k < schemaSize; k++) {
schemaInfos.add(TimeseriesContext.deserialize(buffer));
}
@@ -308,12 +310,12 @@ public class TimeseriesRegionScanNode extends
RegionScanNode {
return new MeasurementPath(newNodes);
} else {
int size = ReadWriteIOUtils.readInt(buffer);
- List<String> measurements = new ArrayList<>();
- List<IMeasurementSchema> schemaList = new ArrayList<>();
+ List<String> measurements = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
measurements.add(ReadWriteIOUtils.readString(buffer));
}
size = ReadWriteIOUtils.readInt(buffer);
+ List<IMeasurementSchema> schemaList = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
schemaList.add(MeasurementSchema.deserializeFrom(buffer));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
index 8d484933e8f..81ec30db34f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertMultiTabletsNode.java
@@ -228,10 +228,9 @@ public class InsertMultiTabletsNode extends InsertNode {
public static InsertMultiTabletsNode deserialize(ByteBuffer byteBuffer) {
PlanNodeId planNodeId;
- List<InsertTabletNode> insertTabletNodeList = new ArrayList<>();
- List<Integer> parentIndex = new ArrayList<>();
-
int size = byteBuffer.getInt();
+ List<InsertTabletNode> insertTabletNodeList = new ArrayList<>(size);
+ List<Integer> parentIndex = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
InsertTabletNode insertTabletNode = new InsertTabletNode(new
PlanNodeId(""));
insertTabletNode.subDeserialize(byteBuffer);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
index 7071f9927c0..c2ba7c04791 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertRowsNode.java
@@ -229,10 +229,9 @@ public class InsertRowsNode extends InsertNode implements
WALEntryValue {
public static InsertRowsNode deserialize(ByteBuffer byteBuffer) {
PlanNodeId planNodeId;
- List<InsertRowNode> insertRowNodeList = new ArrayList<>();
- List<Integer> insertRowNodeIndex = new ArrayList<>();
-
int size = byteBuffer.getInt();
+ List<InsertRowNode> insertRowNodeList = new ArrayList<>(size);
+ List<Integer> insertRowNodeIndex = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
InsertRowNode insertRowNode = new InsertRowNode(new PlanNodeId(""));
insertRowNode.subDeserialize(byteBuffer);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java
index c76e7f327dd..4a98819c648 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/RelationalInsertRowsNode.java
@@ -115,10 +115,9 @@ public class RelationalInsertRowsNode extends
InsertRowsNode {
public static RelationalInsertRowsNode deserialize(ByteBuffer byteBuffer) {
PlanNodeId planNodeId;
- List<InsertRowNode> insertRowNodeList = new ArrayList<>();
- List<Integer> insertRowNodeIndex = new ArrayList<>();
-
int size = byteBuffer.getInt();
+ List<InsertRowNode> insertRowNodeList = new ArrayList<>(size);
+ List<Integer> insertRowNodeIndex = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
RelationalInsertRowNode insertRowNode = new RelationalInsertRowNode(new
PlanNodeId(""));
insertRowNode.subDeserialize(byteBuffer);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java
index 1301ec97eb3..cb8b9deb585 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/model/ModelInferenceDescriptor.java
@@ -21,13 +21,13 @@ package
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.model;
import org.apache.iotdb.commons.model.ModelInformation;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -57,7 +57,7 @@ public class ModelInferenceDescriptor {
if (inferenceAttributesSize == 0) {
this.inferenceAttributes = null;
} else {
- this.inferenceAttributes = new HashMap<>();
+ this.inferenceAttributes =
Maps.newHashMapWithExpectedSize(inferenceAttributesSize);
for (int i = 0; i < inferenceAttributesSize; i++) {
this.inferenceAttributes.put(
ReadWriteIOUtils.readString(buffer),
ReadWriteIOUtils.readString(buffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java
index 14ec0fbdfc6..188c435f2b6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/schema/TableDeviceAttributeCommitUpdateNode.java
@@ -30,13 +30,13 @@ import
org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanType;
import org.apache.iotdb.db.schemaengine.schemaregion.SchemaRegionPlanVisitor;
import
org.apache.iotdb.db.schemaengine.schemaregion.attribute.update.DeviceAttributeCacheUpdater;
+import com.google.common.collect.Sets;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -170,7 +170,7 @@ public class TableDeviceAttributeCommitUpdateNode extends
PlanNode implements IS
}
size = ReadWriteIOUtils.readInt(buffer);
- final Set<TDataNodeLocation> shrunkNodes = new HashSet<>();
+ final Set<TDataNodeLocation> shrunkNodes =
Sets.newHashSetWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
shrunkNodes.add(
DeviceAttributeCacheUpdater.deserializeNodeLocationForAttributeUpdate(buffer));
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
index 52fa8646187..326e7b1e849 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/logfile/visitor/SchemaRegionPlanDeserializer.java
@@ -174,31 +174,31 @@ public class SchemaRegionPlanDeserializer implements
IDeserializer<ISchemaRegion
}
final int size = ReadWriteIOUtils.readInt(buffer);
- final List<String> measurements = new ArrayList<>();
+ final List<String> measurements = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
measurements.add(ReadWriteIOUtils.readString(buffer));
}
createAlignedTimeSeriesPlan.setMeasurements(measurements);
- final List<TSDataType> dataTypes = new ArrayList<>();
+ final List<TSDataType> dataTypes = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
dataTypes.add(TSDataType.deserialize(buffer.get()));
}
createAlignedTimeSeriesPlan.setDataTypes(dataTypes);
- final List<TSEncoding> encodings = new ArrayList<>();
+ final List<TSEncoding> encodings = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
encodings.add(TSEncoding.deserialize(buffer.get()));
}
createAlignedTimeSeriesPlan.setEncodings(encodings);
- final List<CompressionType> compressors = new ArrayList<>();
+ final List<CompressionType> compressors = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
compressors.add(CompressionType.deserialize(buffer.get()));
}
createAlignedTimeSeriesPlan.setCompressors(compressors);
- final List<Long> tagOffsets = new ArrayList<>();
+ final List<Long> tagOffsets = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
tagOffsets.add(buffer.getLong());
}
@@ -206,7 +206,7 @@ public class SchemaRegionPlanDeserializer implements
IDeserializer<ISchemaRegion
// alias
if (buffer.get() == 1) {
- List<String> aliasList = new ArrayList<>();
+ List<String> aliasList = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
aliasList.add(ReadWriteIOUtils.readString(buffer));
}
@@ -215,7 +215,7 @@ public class SchemaRegionPlanDeserializer implements
IDeserializer<ISchemaRegion
// tags
if (buffer.get() == 1) {
- List<Map<String, String>> tagsList = new ArrayList<>();
+ List<Map<String, String>> tagsList = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
tagsList.add(ReadWriteIOUtils.readMap(buffer));
}
@@ -224,7 +224,7 @@ public class SchemaRegionPlanDeserializer implements
IDeserializer<ISchemaRegion
// attributes
if (buffer.get() == 1) {
- List<Map<String, String>> attributesList = new ArrayList<>();
+ List<Map<String, String>> attributesList = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
attributesList.add(ReadWriteIOUtils.readMap(buffer));
}
@@ -287,7 +287,7 @@ public class SchemaRegionPlanDeserializer implements
IDeserializer<ISchemaRegion
int pathNumber = buffer.getInt();
try {
- List<PartialPath> deletePathList = new ArrayList<>();
+ List<PartialPath> deletePathList = new ArrayList<>(pathNumber);
for (int i = 0; i < pathNumber; i++) {
deletePathList.add(new
PartialPath(ReadWriteIOUtils.readString(buffer)));
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
index 35a3696630e..5095ab45fd5 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
@@ -429,9 +429,9 @@ public abstract class AbstractMemTable implements IMemTable
{
}
public void writeTabletNode(InsertTabletNode insertTabletNode, int start,
int end) {
- List<IMeasurementSchema> schemaList = new ArrayList<>();
final int measurementSize =
insertTabletNode.getMeasurements() == null ? 0 :
insertTabletNode.getMeasurements().length;
+ List<IMeasurementSchema> schemaList = new ArrayList<>(measurementSize);
final Object[] writableColumns = new Object[measurementSize];
final BitMap[] writableBitMaps =
insertTabletNode.getBitMaps() == null ? null : new
BitMap[measurementSize];
@@ -475,9 +475,9 @@ public abstract class AbstractMemTable implements IMemTable
{
int end,
TSStatus[] results,
List<Pair<IDeviceID, Integer>> deviceEndOffsetPairs) {
- List<IMeasurementSchema> schemaList = new ArrayList<>();
final int measurementSize =
insertTabletNode.getMeasurements() == null ? 0 :
insertTabletNode.getMeasurements().length;
+ List<IMeasurementSchema> schemaList = new ArrayList<>(measurementSize);
final Object[] writableColumns = new Object[measurementSize];
final BitMap[] writableBitMaps =
insertTabletNode.getBitMaps() == null ? null : new
BitMap[measurementSize];
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
index a24c0589933..1c670220f21 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
@@ -1235,7 +1235,7 @@ public class AlignedWritableMemChunk extends
AbstractWritableMemChunk {
schemaList.add(schema);
}
int sortedListSize = stream.readInt();
- List<AlignedTVList> sortedList = new ArrayList<>();
+ List<AlignedTVList> sortedList = new ArrayList<>(sortedListSize);
for (int i = 0; i < sortedListSize; i++) {
AlignedTVList tvList = AlignedTVList.deserialize(stream);
sortedList.add(tvList);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
index 7e54296c6a8..bc3d91fc3f7 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
@@ -470,7 +470,7 @@ public class WritableMemChunk extends
AbstractWritableMemChunk {
TypeServices.StorageEngine.TV_LIST_OBJECT_WRITER_SERVICE.call(
Type.fromTsDataType(memChunk.schema.getType()));
int sortedListSize = stream.readInt();
- memChunk.sortedList = new ArrayList<>();
+ memChunk.sortedList = new ArrayList<>(sortedListSize);
for (int i = 0; i < sortedListSize; i++) {
TVList tvList = TVList.deserialize(stream);
memChunk.sortedList.add(tvList);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
index b38bb8b8cc9..8af037a5924 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.db.i18n.StorageEngineMessages;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
import org.apache.iotdb.db.utils.CommonUtils;
+import com.google.common.collect.Sets;
import com.google.common.util.concurrent.RateLimiter;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.file.metadata.IDeviceID.Deserializer;
@@ -42,7 +43,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.Arrays;
-import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
@@ -200,7 +200,7 @@ public class ArrayDeviceTimeIndex implements ITimeIndex {
public static Set<IDeviceID> getDevices(InputStream inputStream) throws
IOException {
int deviceNum = ReadWriteIOUtils.readInt(inputStream);
ReadWriteIOUtils.skip(inputStream, 2L * deviceNum *
ReadWriteIOUtils.LONG_LEN);
- Set<IDeviceID> devices = new HashSet<>();
+ Set<IDeviceID> devices = Sets.newHashSetWithExpectedSize(deviceNum);
for (int i = 0; i < deviceNum; i++) {
IDeviceID deviceID =
Deserializer.DEFAULT_DESERIALIZER.deserializeFrom(inputStream);
ReadWriteIOUtils.skip(inputStream, ReadWriteIOUtils.INT_LEN);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
index 785407ca40f..275b84e11c0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
@@ -23,13 +23,13 @@ import
org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
import
org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache;
+import com.google.common.collect.Sets;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
-import java.util.HashSet;
import java.util.Set;
public class PlainDeviceTimeIndex extends ArrayDeviceTimeIndex implements
ITimeIndex {
@@ -97,7 +97,7 @@ public class PlainDeviceTimeIndex extends
ArrayDeviceTimeIndex implements ITimeI
public static Set<IDeviceID> getDevices(InputStream inputStream) throws
IOException {
int deviceNum = ReadWriteIOUtils.readInt(inputStream);
ReadWriteIOUtils.skip(inputStream, 2L * deviceNum *
ReadWriteIOUtils.LONG_LEN);
- Set<IDeviceID> devices = new HashSet<>();
+ Set<IDeviceID> devices = Sets.newHashSetWithExpectedSize(deviceNum);
for (int i = 0; i < deviceNum; i++) {
String path =
DataNodeDevicePathCache.getInstance()
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java
index d8a8e6adce9..2e4e51301c4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/AlignedChunkData.java
@@ -399,7 +399,7 @@ public class AlignedChunkData implements ChunkData {
final long dataSize = ReadWriteIOUtils.readLong(stream);
final boolean needDecodeChunk = ReadWriteIOUtils.readBool(stream);
final int chunkHeaderListSize = ReadWriteIOUtils.readInt(stream);
- final List<ChunkHeader> chunkHeaderList = new ArrayList<>();
+ final List<ChunkHeader> chunkHeaderList = new
ArrayList<>(chunkHeaderListSize);
for (int i = 0; i < chunkHeaderListSize; i++) {
final byte chunkType = ReadWriteIOUtils.readByte(stream);
ChunkHeader chunkHeader = ChunkHeader.deserializeFrom(stream, chunkType);
@@ -407,7 +407,7 @@ public class AlignedChunkData implements ChunkData {
chunkHeader.setMeasurementID(MEASUREMENT_ID_CACHE.get(measurementID, m
-> m));
chunkHeaderList.add(chunkHeader);
}
- final List<Integer> pageNumbers = new ArrayList<>();
+ final List<Integer> pageNumbers = new ArrayList<>(needDecodeChunk ?
chunkHeaderListSize : 0);
if (needDecodeChunk) {
for (int i = 0; i < chunkHeaderListSize; i++) {
pageNumbers.add(ReadWriteIOUtils.readInt(stream));
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
index 4c1a4baa78f..01f21a06e57 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/entity/Role.java
@@ -128,7 +128,7 @@ public class Role {
}
public List<TPathPrivilege> getTreePrivilegeInfo() {
- List<TPathPrivilege> privilegeList = new ArrayList<>();
+ List<TPathPrivilege> privilegeList = new
ArrayList<>(pathPrivilegeList.size());
for (PathPrivilege pathPrivilege : pathPrivilegeList) {
TPathPrivilege pathPriv = new TPathPrivilege();
pathPriv.setPath(pathPrivilege.getPath().getFullPath());
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
index c6b20c2c137..abc5ea5dabf 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/auth/role/LocalFileRoleAccessor.java
@@ -160,7 +160,7 @@ public class LocalFileRoleAccessor implements
IEntityAccessor {
throws IOException, IllegalPathException {
role.setSysPrivilegesWithMask(dataInputStream.readInt());
int num = ReadWriteIOUtils.readInt(dataInputStream);
- List<PathPrivilege> pathPrivilegeList = new ArrayList<>();
+ List<PathPrivilege> pathPrivilegeList = new ArrayList<>(num);
for (int i = 0; i < num; i++) {
pathPrivilegeList.add(
IOUtils.readPathPrivilege(dataInputStream, STRING_ENCODING,
strBufferLocal));
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java
index ed2b4d91145..26e18a3f7dc 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/consensus/index/impl/StateProgressIndex.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.consensus.index.ProgressIndex;
import org.apache.iotdb.commons.consensus.index.ProgressIndexType;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -213,8 +214,8 @@ public class StateProgressIndex extends ProgressIndex {
public static StateProgressIndex deserializeFrom(ByteBuffer byteBuffer) {
final long version = ReadWriteIOUtils.readLong(byteBuffer);
- final Map<String, Binary> state = new HashMap<>();
final int size = ReadWriteIOUtils.readInt(byteBuffer);
+ final Map<String, Binary> state = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
final String key = ReadWriteIOUtils.readString(byteBuffer);
final Binary value = ReadWriteIOUtils.readBinary(byteBuffer);
@@ -229,8 +230,8 @@ public class StateProgressIndex extends ProgressIndex {
public static StateProgressIndex deserializeFrom(InputStream stream) throws
IOException {
final long version = ReadWriteIOUtils.readLong(stream);
- final Map<String, Binary> state = new HashMap<>();
final int size = ReadWriteIOUtils.readInt(stream);
+ final Map<String, Binary> state = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
final String key = ReadWriteIOUtils.readString(stream);
final Binary value = ReadWriteIOUtils.readBinary(stream);
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java
index 28264f142a1..ec46043a54a 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/strategy/RandomOnDiskUsableSpaceStrategy.java
@@ -55,7 +55,7 @@ public class RandomOnDiskUsableSpaceStrategy extends
DirectoryStrategy {
/** get space list of all folders. */
public List<Long> getFolderUsableSpaceList() {
- List<Long> spaceList = new ArrayList<>();
+ List<Long> spaceList = new ArrayList<>(folders.size());
for (int i = 0; i < folders.size(); i++) {
String folder = folders.get(i);
if (isUnavailableFolder(folder)) {
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
index 5f06f2dcabd..77b8b0b7aaf 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
@@ -56,7 +56,7 @@ public class ModelHyperparameter {
}
public List<String> toStringList() {
- List<String> resultList = new ArrayList<>();
+ List<String> resultList = new ArrayList<>(keyValueMap.size());
for (Map.Entry<String, String> keyValuePair : keyValueMap.entrySet()) {
resultList.add(keyValuePair.getKey() + "=" + keyValuePair.getValue());
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
index 43502db0be8..07a3c7721e8 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/AlignedPath.java
@@ -377,14 +377,14 @@ public class AlignedPath extends PartialPath {
PartialPath partialPath = PartialPath.deserialize(byteBuffer);
AlignedPath alignedPath = new AlignedPath();
int measurementSize = ReadWriteIOUtils.readInt(byteBuffer);
- List<String> measurements = new ArrayList<>();
+ List<String> measurements = new ArrayList<>(measurementSize);
for (int i = 0; i < measurementSize; i++) {
measurements.add(ReadWriteIOUtils.readString(byteBuffer));
}
int measurementSchemaSize = ReadWriteIOUtils.readInt(byteBuffer);
List<IMeasurementSchema> measurementSchemas = null;
if (measurementSchemaSize != -1) {
- measurementSchemas = new ArrayList<>();
+ measurementSchemas = new ArrayList<>(measurementSchemaSize);
for (int i = 0; i < measurementSchemaSize; i++) {
byte type = ReadWriteIOUtils.readByte(byteBuffer);
if (type == 0) {
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
index 9d71b0121bc..9041402be46 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PartialPath.java
@@ -973,7 +973,7 @@ public class PartialPath extends Path implements
Comparable<Path>, Cloneable {
}
public static List<String> toStringList(List<PartialPath> pathList) {
- List<String> ret = new ArrayList<>();
+ List<String> ret = new ArrayList<>(pathList.size());
for (PartialPath path : pathList) {
ret.add(path.getFullPath());
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
index 56240432f69..03b5f02e04b 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/path/PathPatternNode.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.commons.path;
+import com.google.common.collect.Sets;
import org.apache.tsfile.utils.Accountable;
import org.apache.tsfile.utils.PublicBAOS;
import org.apache.tsfile.utils.RamUsageEstimator;
@@ -30,7 +31,6 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -272,7 +272,7 @@ public class PathPatternNode<V, S extends
PathPatternNode.Serializer<V>> impleme
final int typeOrValueSize = ReadWriteIOUtils.readInt(buffer);
if (typeOrValueSize >= 0) {
// measurement node in PatternTreeMap
- final Set<V> valueSet = new HashSet<>();
+ final Set<V> valueSet = Sets.newHashSetWithExpectedSize(typeOrValueSize);
for (int i = 0; i < typeOrValueSize; i++) {
valueSet.add(serializer.read(buffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java
index 188e3fbe4fc..67ff74b79c2 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2TransferFileSealWithModReq.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.consensus.index.ProgressIndex;
import org.apache.iotdb.consensus.iotconsensusv2.thrift.TCommitId;
import
org.apache.iotdb.consensus.iotconsensusv2.thrift.TIoTConsensusV2TransferReq;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.PublicBAOS;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -31,7 +32,6 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -117,26 +117,26 @@ public abstract class
IoTConsensusV2TransferFileSealWithModReq extends TIoTConse
public IoTConsensusV2TransferFileSealWithModReq
translateFromTIoTConsensusV2TransferReq(
TIoTConsensusV2TransferReq req) {
- fileNames = new ArrayList<>();
int size = ReadWriteIOUtils.readInt(req.body);
+ fileNames = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
fileNames.add(ReadWriteIOUtils.readString(req.body));
}
- fileLengths = new ArrayList<>();
size = ReadWriteIOUtils.readInt(req.body);
+ fileLengths = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
fileLengths.add(ReadWriteIOUtils.readLong(req.body));
}
- pointCounts = new ArrayList<>();
size = ReadWriteIOUtils.readInt(req.body);
+ pointCounts = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
pointCounts.add(ReadWriteIOUtils.readLong(req.body));
}
- parameters = new HashMap<>();
size = ReadWriteIOUtils.readInt(req.body);
+ parameters = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
final String key = ReadWriteIOUtils.readString(req.body);
final String value = ReadWriteIOUtils.readString(req.body);
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java
index 227d5871d8b..c6d0c580cea 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferFileSealReqV2.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.commons.pipe.sink.payload.thrift.request;
import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.PublicBAOS;
import org.apache.tsfile.utils.ReadWriteIOUtils;
@@ -28,7 +29,6 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -100,20 +100,20 @@ public abstract class PipeTransferFileSealReqV2 extends
TPipeTransferReq {
}
public PipeTransferFileSealReqV2 translateFromTPipeTransferReq(final
TPipeTransferReq req) {
- fileNames = new ArrayList<>();
int size = ReadWriteIOUtils.readInt(req.body);
+ fileNames = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
fileNames.add(ReadWriteIOUtils.readString(req.body));
}
- fileLengths = new ArrayList<>();
size = ReadWriteIOUtils.readInt(req.body);
+ fileLengths = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
fileLengths.add(ReadWriteIOUtils.readLong(req.body));
}
- parameters = new HashMap<>();
size = ReadWriteIOUtils.readInt(req.body);
+ parameters = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
final String key = ReadWriteIOUtils.readString(req.body);
final String value = ReadWriteIOUtils.readString(req.body);
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java
index 47267949472..8152ffe43e7 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/thrift/request/PipeTransferHandshakeV2Req.java
@@ -21,13 +21,13 @@ package
org.apache.iotdb.commons.pipe.sink.payload.thrift.request;
import org.apache.iotdb.service.rpc.thrift.TPipeTransferReq;
+import com.google.common.collect.Maps;
import org.apache.tsfile.utils.PublicBAOS;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -63,9 +63,9 @@ public abstract class PipeTransferHandshakeV2Req extends
TPipeTransferReq {
protected final PipeTransferHandshakeV2Req translateFromTPipeTransferReq(
TPipeTransferReq transferReq) {
- Map<String, String> params = new HashMap<>();
final ByteBuffer bodyBuffer = transferReq.body.duplicate();
final int size = ReadWriteIOUtils.readInt(bodyBuffer);
+ Map<String, String> params = Maps.newHashMapWithExpectedSize(size);
for (int i = 0; i < size; ++i) {
final String key = ReadWriteIOUtils.readString(bodyBuffer);
final String value = ReadWriteIOUtils.readString(bodyBuffer);
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java
index ac1d0d71950..5b0e85cf3cf 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/planner/rowpattern/LogicalIndexPointer.java
@@ -21,12 +21,12 @@ package
org.apache.iotdb.commons.queryengine.plan.relational.planner.rowpattern;
import org.apache.iotdb.commons.i18n.QueryMessages;
+import com.google.common.collect.Sets;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@@ -144,7 +144,7 @@ public class LogicalIndexPointer {
public static LogicalIndexPointer deserialize(ByteBuffer byteBuffer) {
int labelCount = ReadWriteIOUtils.readInt(byteBuffer);
- Set<IrLabel> labels = new HashSet<>();
+ Set<IrLabel> labels = Sets.newHashSetWithExpectedSize(labelCount);
for (int i = 0; i < labelCount; i++) {
labels.add(IrLabel.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java
index 24bf8976caa..336dee747a4 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/queryengine/plan/relational/sql/ast/InListExpression.java
@@ -59,7 +59,7 @@ public class InListExpression extends Expression {
public InListExpression(ByteBuffer byteBuffer) {
super(null);
int size = ReadWriteIOUtils.readInt(byteBuffer);
- this.values = new ArrayList<>();
+ this.values = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
values.add(Expression.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java
index 888f9675caa..c3da760aec9 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/multichildren/AbstractMultiChildrenFilter.java
@@ -43,7 +43,7 @@ public abstract class AbstractMultiChildrenFilter extends
SchemaFilter {
protected AbstractMultiChildrenFilter(final ByteBuffer byteBuffer) {
final int num = ReadWriteIOUtils.readInt(byteBuffer);
- children = new ArrayList<>();
+ children = new ArrayList<>(num);
for (int i = 0; i < num; ++i) {
this.children.add(SchemaFilter.deserialize(byteBuffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java
index 5df2993825d..20198bc36e9 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/filter/impl/values/InFilter.java
@@ -24,13 +24,13 @@ import
org.apache.iotdb.commons.schema.filter.SchemaFilterType;
import org.apache.iotdb.commons.schema.filter.SchemaFilterVisitor;
import org.apache.iotdb.commons.schema.filter.impl.multichildren.OrFilter;
+import com.google.common.collect.Sets;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.ReadWriteIOUtils;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@@ -50,7 +50,7 @@ public class InFilter extends SchemaFilter {
public InFilter(final ByteBuffer byteBuffer) {
final int length = ReadWriteIOUtils.readInt(byteBuffer);
- this.values = new HashSet<>();
+ this.values = Sets.newHashSetWithExpectedSize(length);
for (int i = 0; i < length; ++i) {
values.add(ReadWriteIOUtils.readString(byteBuffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
index 1f73f59ae00..fcd4c1c6f97 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/view/viewExpression/multi/FunctionViewExpression.java
@@ -81,7 +81,7 @@ public class FunctionViewExpression extends ViewExpression {
functionName = ReadWriteIOUtils.readString(byteBuffer);
functionAttributesKeyValueList =
ReadWriteIOUtils.readStringList(byteBuffer);
int expressionSize = ReadWriteIOUtils.readInt(byteBuffer);
- expressions = new ArrayList<>();
+ expressions = new ArrayList<>(expressionSize);
for (int i = 0; i < expressionSize; i++) {
expressions.add(ViewExpression.deserialize(byteBuffer));
}
@@ -92,7 +92,7 @@ public class FunctionViewExpression extends ViewExpression {
functionName = ReadWriteIOUtils.readString(inputStream);
functionAttributesKeyValueList =
ReadWriteIOUtils.readStringList(inputStream);
int expressionSize = ReadWriteIOUtils.readInt(inputStream);
- expressions = new ArrayList<>();
+ expressions = new ArrayList<>(expressionSize);
for (int i = 0; i < expressionSize; i++) {
expressions.add(ViewExpression.deserialize(inputStream));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
index 1e01dbeaee7..ccd254e1d20 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/AuthUtils.java
@@ -545,7 +545,7 @@ public class AuthUtils {
public static List<PartialPath> deserializePartialPathList(ByteBuffer
buffer) {
int size = buffer.getInt();
- List<PartialPath> paths = new ArrayList<>();
+ List<PartialPath> paths = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
paths.add((PartialPath) PathDeserializeUtil.deserialize(buffer));
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java
index e797779b832..79dbc001105 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/utils/BasicStructureSerDeUtil.java
@@ -21,11 +21,12 @@ package org.apache.iotdb.commons.utils;
import org.apache.iotdb.commons.i18n.UtilMessages;
+import com.google.common.collect.Maps;
+
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -54,7 +55,7 @@ public class BasicStructureSerDeUtil {
if (size < 0) {
return null;
}
- List<String> stringList = new ArrayList<>();
+ List<String> stringList = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
stringList.add(readString(buffer));
}
@@ -217,7 +218,7 @@ public class BasicStructureSerDeUtil {
if (length == -1) {
return null;
}
- Map<String, String> map = new HashMap<>(length);
+ Map<String, String> map = Maps.newHashMapWithExpectedSize(length);
for (int i = 0; i < length; i++) {
// key
String key = readString(buffer);
@@ -263,13 +264,13 @@ public class BasicStructureSerDeUtil {
if (length == -1) {
return null;
}
- Map<String, List<String>> map = new HashMap<>(length);
+ Map<String, List<String>> map = Maps.newHashMapWithExpectedSize(length);
for (int i = 0; i < length; i++) {
// key
String key = readString(buffer);
// value
int listSize = readInt(buffer);
- List<String> valueList = new ArrayList<>();
+ List<String> valueList = new ArrayList<>(listSize);
for (int j = 0; j < listSize; j++) {
String value = readString(buffer);
valueList.add(value);
@@ -305,13 +306,13 @@ public class BasicStructureSerDeUtil {
if (length == -1) {
return null;
}
- Map<Integer, List<Integer>> map = new HashMap<>(length);
+ Map<Integer, List<Integer>> map = Maps.newHashMapWithExpectedSize(length);
for (int i = 0; i < length; i++) {
// key
int key = readInt(buffer);
// value
int listSize = readInt(buffer);
- List<Integer> valueList = new ArrayList<>();
+ List<Integer> valueList = new ArrayList<>(listSize);
for (int j = 0; j < listSize; j++) {
int value = readInt(buffer);
valueList.add(value);
diff --git
a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java
b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java
index aead60e7942..aa0997cd7c2 100644
---
a/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java
+++
b/library-udf/src/main/java/org/apache/iotdb/library/dprofile/UDTFSegment.java
@@ -104,7 +104,7 @@ public class UDTFSegment implements UDTF {
} else if (method.equals("swab")) { // haven't tested yet
seg = Segment.swabAlg(v, maxError, windowSize);
}
- ArrayList<double[]> res = new ArrayList<>();
+ ArrayList<double[]> res = new ArrayList<>(seg.size());
for (double[] doubles : seg) {
res.add(Segment.approximatedSegment(doubles));
}
diff --git
a/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java
b/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java
index 4e5e7320670..565f24156df 100644
---
a/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java
+++
b/library-udf/src/main/java/org/apache/iotdb/library/match/PatternExecutor.java
@@ -112,7 +112,7 @@ public class PatternExecutor {
}
public List<Point> scalePoint(List<Long> times, List<Double> values) {
- List<Point> points = new ArrayList<>();
+ List<Point> points = new ArrayList<>(times.size());
TimeScale xScale = new TimeScale(times.get(0), times.get(times.size() -
1), 0, 1000);
double minY = values.stream().min(Double::compare).orElseGet(() -> 0.0);
double maxY = values.stream().max(Double::compare).orElseGet(() -> 0.0);
@@ -129,7 +129,7 @@ public class PatternExecutor {
}
public List<Point> scalePoint(List<Point> sourcePoints) {
- List<Point> points = new ArrayList<>();
+ List<Point> points = new ArrayList<>(sourcePoints.size());
TimeScale xScale =
new TimeScale(
(long) sourcePoints.get(0).getX(),
@@ -199,7 +199,7 @@ public class PatternExecutor {
if (points.size() < 2) {
return new ArrayList<>();
}
- List<Double> tangents = new ArrayList<>();
+ List<Double> tangents = new ArrayList<>(points.size());
tangents.add(tangent(points.get(0), points.get(1)));
for (int i = 1; i < points.size(); i++) {
tangents.add(tangent(points.get(i - 1), points.get(i)));