what-the-bank/sources/com/google/common/collect/AbstractIterator.java

89 lines
2.5 KiB
Java

package com.google.common.collect;
import com.google.common.base.Preconditions;
import java.util.NoSuchElementException;
/* loaded from: classes2.dex */
public abstract class AbstractIterator<T> extends UnmodifiableIterator<T> {
private T next;
private State state = State.NOT_READY;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public enum State {
READY,
NOT_READY,
DONE,
FAILED
}
protected abstract T computeNext();
/* JADX INFO: Access modifiers changed from: protected */
public final T endOfData() {
this.state = State.DONE;
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: com.google.common.collect.AbstractIterator$1, reason: invalid class name */
/* loaded from: classes2.dex */
public static /* synthetic */ class AnonymousClass1 {
static final int[] $SwitchMap$com$google$common$collect$AbstractIterator$State;
static {
int[] iArr = new int[State.values().length];
$SwitchMap$com$google$common$collect$AbstractIterator$State = iArr;
try {
iArr[State.DONE.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$com$google$common$collect$AbstractIterator$State[State.READY.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
}
}
@Override // java.util.Iterator
public final boolean hasNext() {
Preconditions.checkState(this.state != State.FAILED);
int i = AnonymousClass1.$SwitchMap$com$google$common$collect$AbstractIterator$State[this.state.ordinal()];
if (i == 1) {
return false;
}
if (i != 2) {
return tryToComputeNext();
}
return true;
}
private boolean tryToComputeNext() {
this.state = State.FAILED;
this.next = computeNext();
if (this.state == State.DONE) {
return false;
}
this.state = State.READY;
return true;
}
@Override // java.util.Iterator
public final T next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
this.state = State.NOT_READY;
T t = this.next;
this.next = null;
return t;
}
public final T peek() {
if (hasNext()) {
return this.next;
}
throw new NoSuchElementException();
}
}