diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/CollectOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/CollectOperator.java index 2ec9a4fc9c..df69bf2cd3 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/CollectOperator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/CollectOperator.java @@ -19,7 +19,8 @@ package org.apache.hadoop.hive.ql.exec; import java.io.Serializable; -import java.util.ArrayList; +import java.util.ArrayDeque; +import java.util.Queue; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.ql.CompilationOpContext; @@ -37,7 +38,7 @@ Serializable { private static final long serialVersionUID = 1L; - protected transient ArrayList rowList; + protected transient Queue rowList; protected transient ObjectInspector standardRowInspector; transient int maxSize; @@ -53,7 +54,7 @@ public CollectOperator(CompilationOpContext ctx) { @Override protected void initializeOp(Configuration hconf) throws HiveException { super.initializeOp(hconf); - rowList = new ArrayList(); + this.rowList = new ArrayDeque<>(); maxSize = conf.getBufferSize().intValue(); } @@ -83,7 +84,7 @@ public void retrieve(InspectableObject result) { result.o = null; result.oi = null; } else { - result.o = rowList.remove(0); + result.o = rowList.poll(); result.oi = standardRowInspector; } }