Index: third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java |
diff --git a/third_party/protobuf/java/src/main/java/com/google/protobuf/IntArrayList.java b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java |
similarity index 87% |
rename from third_party/protobuf/java/src/main/java/com/google/protobuf/IntArrayList.java |
rename to third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java |
index f4e68ed890b751f4aef05a6ee99bbb5a2506a4ba..6d6ece5a284bfcb8e32adc6b45bf7ba9ac27effc 100644 |
--- a/third_party/protobuf/java/src/main/java/com/google/protobuf/IntArrayList.java |
+++ b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java |
@@ -34,7 +34,6 @@ import com.google.protobuf.Internal.IntList; |
import java.util.Arrays; |
import java.util.Collection; |
-import java.util.List; |
import java.util.RandomAccess; |
/** |
@@ -44,8 +43,6 @@ import java.util.RandomAccess; |
*/ |
final class IntArrayList extends AbstractProtobufList<Integer> implements IntList, RandomAccess { |
- private static final int DEFAULT_CAPACITY = 10; |
- |
private static final IntArrayList EMPTY_LIST = new IntArrayList(); |
static { |
EMPTY_LIST.makeImmutable(); |
@@ -70,32 +67,55 @@ final class IntArrayList extends AbstractProtobufList<Integer> implements IntLis |
* Constructs a new mutable {@code IntArrayList} with default capacity. |
*/ |
IntArrayList() { |
- this(DEFAULT_CAPACITY); |
- } |
- |
- /** |
- * Constructs a new mutable {@code IntArrayList} with the provided capacity. |
- */ |
- IntArrayList(int capacity) { |
- array = new int[capacity]; |
- size = 0; |
+ this(new int[DEFAULT_CAPACITY], 0); |
} |
/** |
* Constructs a new mutable {@code IntArrayList} containing the same elements as {@code other}. |
*/ |
- IntArrayList(List<Integer> other) { |
- if (other instanceof IntArrayList) { |
- IntArrayList list = (IntArrayList) other; |
- array = list.array.clone(); |
- size = list.size; |
- } else { |
- size = other.size(); |
- array = new int[size]; |
- for (int i = 0; i < size; i++) { |
- array[i] = other.get(i); |
+ private IntArrayList(int[] array, int size) { |
+ this.array = array; |
+ this.size = size; |
+ } |
+ |
+ @Override |
+ public boolean equals(Object o) { |
+ if (this == o) { |
+ return true; |
+ } |
+ if (!(o instanceof IntArrayList)) { |
+ return super.equals(o); |
+ } |
+ IntArrayList other = (IntArrayList) o; |
+ if (size != other.size) { |
+ return false; |
+ } |
+ |
+ final int[] arr = other.array; |
+ for (int i = 0; i < size; i++) { |
+ if (array[i] != arr[i]) { |
+ return false; |
} |
} |
+ |
+ return true; |
+ } |
+ |
+ @Override |
+ public int hashCode() { |
+ int result = 1; |
+ for (int i = 0; i < size; i++) { |
+ result = (31 * result) + array[i]; |
+ } |
+ return result; |
+ } |
+ |
+ @Override |
+ public IntList mutableCopyWithCapacity(int capacity) { |
+ if (capacity < size) { |
+ throw new IllegalArgumentException(); |
+ } |
+ return new IntArrayList(Arrays.copyOf(array, capacity), size); |
} |
@Override |