185 lines
6.2 KiB
Java
185 lines
6.2 KiB
Java
package com.squareup.haha.guava.collect;
|
|
|
|
import com.squareup.haha.guava.base.Function;
|
|
import com.squareup.haha.guava.base.Joiner;
|
|
import com.squareup.haha.guava.base.Predicate;
|
|
import com.squareup.haha.guava.base.Predicates;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.NoSuchElementException;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class Iterators {
|
|
private static UnmodifiableListIterator<Object> EMPTY_LIST_ITERATOR = new UnmodifiableListIterator<Object>() { // from class: com.squareup.haha.guava.collect.Iterators.1
|
|
@Override // java.util.Iterator, java.util.ListIterator
|
|
public final boolean hasNext() {
|
|
return false;
|
|
}
|
|
|
|
@Override // java.util.ListIterator
|
|
public final boolean hasPrevious() {
|
|
return false;
|
|
}
|
|
|
|
@Override // java.util.Iterator, java.util.ListIterator
|
|
public final Object next() {
|
|
throw new NoSuchElementException();
|
|
}
|
|
|
|
@Override // java.util.ListIterator
|
|
public final int nextIndex() {
|
|
return 0;
|
|
}
|
|
|
|
@Override // java.util.ListIterator
|
|
public final Object previous() {
|
|
throw new NoSuchElementException();
|
|
}
|
|
|
|
@Override // java.util.ListIterator
|
|
public final int previousIndex() {
|
|
return -1;
|
|
}
|
|
};
|
|
private static final Iterator<Object> EMPTY_MODIFIABLE_ITERATOR = new Iterator<Object>() { // from class: com.squareup.haha.guava.collect.Iterators.2
|
|
@Override // java.util.Iterator
|
|
public final boolean hasNext() {
|
|
return false;
|
|
}
|
|
|
|
@Override // java.util.Iterator
|
|
public final Object next() {
|
|
throw new NoSuchElementException();
|
|
}
|
|
|
|
@Override // java.util.Iterator
|
|
public final void remove() {
|
|
Joiner.checkRemove(false);
|
|
}
|
|
};
|
|
|
|
static void clear(Iterator<?> it) {
|
|
Joiner.checkNotNull(it);
|
|
while (it.hasNext()) {
|
|
it.next();
|
|
it.remove();
|
|
}
|
|
}
|
|
|
|
public static <T> Iterator<T> concat(final Iterator<? extends Iterator<? extends T>> it) {
|
|
Joiner.checkNotNull(it);
|
|
return new Iterator<T>() { // from class: com.squareup.haha.guava.collect.Iterators.5
|
|
private Iterator<? extends T> current = Iterators.emptyIterator();
|
|
private Iterator<? extends T> removeFrom;
|
|
|
|
@Override // java.util.Iterator
|
|
public final boolean hasNext() {
|
|
boolean hasNext;
|
|
while (true) {
|
|
hasNext = ((Iterator) Joiner.checkNotNull(this.current)).hasNext();
|
|
if (hasNext || !it.hasNext()) {
|
|
break;
|
|
}
|
|
this.current = (Iterator) it.next();
|
|
}
|
|
return hasNext;
|
|
}
|
|
|
|
@Override // java.util.Iterator
|
|
public final T next() {
|
|
if (!hasNext()) {
|
|
throw new NoSuchElementException();
|
|
}
|
|
Iterator<? extends T> it2 = this.current;
|
|
this.removeFrom = it2;
|
|
return it2.next();
|
|
}
|
|
|
|
@Override // java.util.Iterator
|
|
public final void remove() {
|
|
Joiner.checkRemove(this.removeFrom != null);
|
|
this.removeFrom.remove();
|
|
this.removeFrom = null;
|
|
}
|
|
};
|
|
}
|
|
|
|
public static boolean elementsEqual(Iterator<?> it, Iterator<?> it2) {
|
|
while (it.hasNext()) {
|
|
if (!it2.hasNext() || !Joiner.equal(it.next(), it2.next())) {
|
|
return false;
|
|
}
|
|
}
|
|
return !it2.hasNext();
|
|
}
|
|
|
|
public static <T> UnmodifiableIterator<T> emptyIterator() {
|
|
return EMPTY_LIST_ITERATOR;
|
|
}
|
|
|
|
static <T> Iterator<T> emptyModifiableIterator() {
|
|
return (Iterator<T>) EMPTY_MODIFIABLE_ITERATOR;
|
|
}
|
|
|
|
static <T> UnmodifiableListIterator<T> forArray(final T[] tArr, final int i, int i2, int i3) {
|
|
Joiner.checkArgument(i2 >= 0);
|
|
Joiner.checkPositionIndexes(i, i + i2, tArr.length);
|
|
Joiner.checkPositionIndex(i3, i2);
|
|
return i2 == 0 ? (UnmodifiableListIterator<T>) EMPTY_LIST_ITERATOR : new AbstractIndexedListIterator<T>(i2, i3) { // from class: com.squareup.haha.guava.collect.Iterators.11
|
|
@Override // com.squareup.haha.guava.collect.AbstractIndexedListIterator
|
|
protected final T get(int i4) {
|
|
return (T) tArr[i + i4];
|
|
}
|
|
};
|
|
}
|
|
|
|
public static boolean removeAll(Iterator<?> it, Collection<?> collection) {
|
|
Predicate in = Predicates.in(collection);
|
|
Joiner.checkNotNull(in);
|
|
boolean z = false;
|
|
while (it.hasNext()) {
|
|
if (in.apply(it.next())) {
|
|
it.remove();
|
|
z = true;
|
|
}
|
|
}
|
|
return z;
|
|
}
|
|
|
|
public static <T> UnmodifiableIterator<T> singletonIterator(final T t) {
|
|
return new UnmodifiableIterator<T>() { // from class: com.squareup.haha.guava.collect.Iterators.12
|
|
private boolean done;
|
|
|
|
@Override // java.util.Iterator
|
|
public final boolean hasNext() {
|
|
return !this.done;
|
|
}
|
|
|
|
@Override // java.util.Iterator
|
|
public final T next() {
|
|
if (this.done) {
|
|
throw new NoSuchElementException();
|
|
}
|
|
this.done = true;
|
|
return (T) t;
|
|
}
|
|
};
|
|
}
|
|
|
|
public static String toString(Iterator<?> it) {
|
|
StringBuilder appendTo = Collections2.STANDARD_JOINER.appendTo(new StringBuilder("["), it);
|
|
appendTo.append(']');
|
|
return appendTo.toString();
|
|
}
|
|
|
|
public static <F, T> Iterator<T> transform(Iterator<F> it, final Function<? super F, ? extends T> function) {
|
|
Joiner.checkNotNull(function);
|
|
return new TransformedIterator<F, T>(it) { // from class: com.squareup.haha.guava.collect.Iterators.8
|
|
@Override // com.squareup.haha.guava.collect.TransformedIterator
|
|
final T transform(F f) {
|
|
return (T) function.apply(f);
|
|
}
|
|
};
|
|
}
|
|
}
|