Rabbit-R1/switch port/java/sources/com/google/common/primitives/ImmutableLongArray.java
2024-05-21 17:08:36 -04:00

378 lines
11 KiB
Java

package com.google.common.primitives;
import com.google.common.base.Preconditions;
import com.google.errorprone.annotations.CheckReturnValue;
import com.google.errorprone.annotations.Immutable;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.RandomAccess;
import javax.annotation.CheckForNull;
import okhttp3.HttpUrl;
@ElementTypesAreNonnullByDefault
@Immutable
/* loaded from: classes3.dex */
public final class ImmutableLongArray implements Serializable {
private static final ImmutableLongArray EMPTY = new ImmutableLongArray(new long[0]);
private final long[] array;
private final int end;
private final transient int start;
public static ImmutableLongArray of() {
return EMPTY;
}
public boolean isEmpty() {
return this.end == this.start;
}
public int length() {
return this.end - this.start;
}
public static ImmutableLongArray of(long j) {
return new ImmutableLongArray(new long[]{j});
}
public static ImmutableLongArray of(long j, long j2) {
return new ImmutableLongArray(new long[]{j, j2});
}
public static ImmutableLongArray of(long j, long j2, long j3) {
return new ImmutableLongArray(new long[]{j, j2, j3});
}
public static ImmutableLongArray of(long j, long j2, long j3, long j4) {
return new ImmutableLongArray(new long[]{j, j2, j3, j4});
}
public static ImmutableLongArray of(long j, long j2, long j3, long j4, long j5) {
return new ImmutableLongArray(new long[]{j, j2, j3, j4, j5});
}
public static ImmutableLongArray of(long j, long j2, long j3, long j4, long j5, long j6) {
return new ImmutableLongArray(new long[]{j, j2, j3, j4, j5, j6});
}
public static ImmutableLongArray of(long j, long... jArr) {
Preconditions.checkArgument(jArr.length <= 2147483646, "the total number of elements must fit in an int");
long[] jArr2 = new long[jArr.length + 1];
jArr2[0] = j;
System.arraycopy(jArr, 0, jArr2, 1, jArr.length);
return new ImmutableLongArray(jArr2);
}
public static ImmutableLongArray copyOf(long[] jArr) {
return jArr.length == 0 ? EMPTY : new ImmutableLongArray(Arrays.copyOf(jArr, jArr.length));
}
public static ImmutableLongArray copyOf(Collection<Long> collection) {
return collection.isEmpty() ? EMPTY : new ImmutableLongArray(Longs.toArray(collection));
}
public static ImmutableLongArray copyOf(Iterable<Long> iterable) {
if (iterable instanceof Collection) {
return copyOf((Collection<Long>) iterable);
}
return builder().addAll(iterable).build();
}
public static Builder builder(int i) {
Preconditions.checkArgument(i >= 0, "Invalid initialCapacity: %s", i);
return new Builder(i);
}
public static Builder builder() {
return new Builder(10);
}
/* loaded from: classes3.dex */
public static final class Builder {
private long[] array;
private int count = 0;
Builder(int i) {
this.array = new long[i];
}
public Builder add(long j) {
ensureRoomFor(1);
long[] jArr = this.array;
int i = this.count;
jArr[i] = j;
this.count = i + 1;
return this;
}
public Builder addAll(long[] jArr) {
ensureRoomFor(jArr.length);
System.arraycopy(jArr, 0, this.array, this.count, jArr.length);
this.count += jArr.length;
return this;
}
public Builder addAll(Iterable<Long> iterable) {
if (iterable instanceof Collection) {
return addAll((Collection<Long>) iterable);
}
Iterator<Long> it = iterable.iterator();
while (it.hasNext()) {
add(it.next().longValue());
}
return this;
}
public Builder addAll(Collection<Long> collection) {
ensureRoomFor(collection.size());
for (Long l : collection) {
long[] jArr = this.array;
int i = this.count;
this.count = i + 1;
jArr[i] = l.longValue();
}
return this;
}
public Builder addAll(ImmutableLongArray immutableLongArray) {
ensureRoomFor(immutableLongArray.length());
System.arraycopy(immutableLongArray.array, immutableLongArray.start, this.array, this.count, immutableLongArray.length());
this.count += immutableLongArray.length();
return this;
}
private void ensureRoomFor(int i) {
int i2 = this.count + i;
long[] jArr = this.array;
if (i2 > jArr.length) {
this.array = Arrays.copyOf(jArr, expandedCapacity(jArr.length, i2));
}
}
private static int expandedCapacity(int i, int i2) {
if (i2 < 0) {
throw new AssertionError("cannot store more than MAX_VALUE elements");
}
int i3 = i + (i >> 1) + 1;
if (i3 < i2) {
i3 = Integer.highestOneBit(i2 - 1) << 1;
}
if (i3 < 0) {
return Integer.MAX_VALUE;
}
return i3;
}
@CheckReturnValue
public ImmutableLongArray build() {
if (this.count == 0) {
return ImmutableLongArray.EMPTY;
}
return new ImmutableLongArray(this.array, 0, this.count);
}
}
private ImmutableLongArray(long[] jArr) {
this(jArr, 0, jArr.length);
}
private ImmutableLongArray(long[] jArr, int i, int i2) {
this.array = jArr;
this.start = i;
this.end = i2;
}
public long get(int i) {
Preconditions.checkElementIndex(i, length());
return this.array[this.start + i];
}
public int indexOf(long j) {
for (int i = this.start; i < this.end; i++) {
if (this.array[i] == j) {
return i - this.start;
}
}
return -1;
}
public int lastIndexOf(long j) {
int i;
int i2 = this.end;
do {
i2--;
i = this.start;
if (i2 < i) {
return -1;
}
} while (this.array[i2] != j);
return i2 - i;
}
public boolean contains(long j) {
return indexOf(j) >= 0;
}
public long[] toArray() {
return Arrays.copyOfRange(this.array, this.start, this.end);
}
public ImmutableLongArray subArray(int i, int i2) {
Preconditions.checkPositionIndexes(i, i2, length());
if (i == i2) {
return EMPTY;
}
long[] jArr = this.array;
int i3 = this.start;
return new ImmutableLongArray(jArr, i + i3, i3 + i2);
}
public List<Long> asList() {
return new AsList();
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes3.dex */
public static class AsList extends AbstractList<Long> implements RandomAccess, Serializable {
private final ImmutableLongArray parent;
private AsList(ImmutableLongArray immutableLongArray) {
this.parent = immutableLongArray;
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.List
public int size() {
return this.parent.length();
}
@Override // java.util.AbstractList, java.util.List
public Long get(int i) {
return Long.valueOf(this.parent.get(i));
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.List
public boolean contains(@CheckForNull Object obj) {
return indexOf(obj) >= 0;
}
@Override // java.util.AbstractList, java.util.List
public int indexOf(@CheckForNull Object obj) {
if (obj instanceof Long) {
return this.parent.indexOf(((Long) obj).longValue());
}
return -1;
}
@Override // java.util.AbstractList, java.util.List
public int lastIndexOf(@CheckForNull Object obj) {
if (obj instanceof Long) {
return this.parent.lastIndexOf(((Long) obj).longValue());
}
return -1;
}
@Override // java.util.AbstractList, java.util.List
public List<Long> subList(int i, int i2) {
return this.parent.subArray(i, i2).asList();
}
@Override // java.util.AbstractList, java.util.Collection, java.util.List
public boolean equals(@CheckForNull Object obj) {
if (obj instanceof AsList) {
return this.parent.equals(((AsList) obj).parent);
}
if (!(obj instanceof List)) {
return false;
}
List list = (List) obj;
if (size() != list.size()) {
return false;
}
int i = this.parent.start;
for (Object obj2 : list) {
if (obj2 instanceof Long) {
int i2 = i + 1;
if (this.parent.array[i] == ((Long) obj2).longValue()) {
i = i2;
}
}
return false;
}
return true;
}
@Override // java.util.AbstractList, java.util.Collection, java.util.List
public int hashCode() {
return this.parent.hashCode();
}
@Override // java.util.AbstractCollection
public String toString() {
return this.parent.toString();
}
}
public boolean equals(@CheckForNull Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof ImmutableLongArray)) {
return false;
}
ImmutableLongArray immutableLongArray = (ImmutableLongArray) obj;
if (length() != immutableLongArray.length()) {
return false;
}
for (int i = 0; i < length(); i++) {
if (get(i) != immutableLongArray.get(i)) {
return false;
}
}
return true;
}
public int hashCode() {
int i = 1;
for (int i2 = this.start; i2 < this.end; i2++) {
i = (i * 31) + Longs.hashCode(this.array[i2]);
}
return i;
}
public String toString() {
if (isEmpty()) {
return HttpUrl.PATH_SEGMENT_ENCODE_SET_URI;
}
StringBuilder sb = new StringBuilder(length() * 5);
sb.append('[').append(this.array[this.start]);
int i = this.start;
while (true) {
i++;
if (i < this.end) {
sb.append(", ").append(this.array[i]);
} else {
sb.append(']');
return sb.toString();
}
}
}
public ImmutableLongArray trimmed() {
return isPartialView() ? new ImmutableLongArray(toArray()) : this;
}
private boolean isPartialView() {
return this.start > 0 || this.end < this.array.length;
}
Object writeReplace() {
return trimmed();
}
Object readResolve() {
return isEmpty() ? EMPTY : this;
}
}