blob: 95f4cd7ad0c94771ff99dcb6303cb7e12f97f741 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package gregtech.api.util;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.jetbrains.annotations.NotNull;
import gregtech.api.metatileentity.MetaTileEntity;
public class ValidMTEList<E extends Collection<T>, T extends MetaTileEntity> implements Iterable<T> {
private final E collection;
public ValidMTEList(E collection) {
this.collection = collection;
}
private class ValidMTEIterator implements Iterator<T> {
Iterator<T> iterator = collection.iterator();
T nextObject = null;
boolean nextObjectSet = false;
private boolean setNextObject() {
while (iterator.hasNext()) {
final T object = iterator.next();
if (object != null && object.isValid()) {
nextObject = object;
nextObjectSet = true;
return true;
} else {
iterator.remove();
}
}
return false;
}
@Override
public boolean hasNext() {
return nextObjectSet || setNextObject();
}
@Override
public T next() {
if (!nextObjectSet && !setNextObject()) {
throw new NoSuchElementException();
}
nextObjectSet = false;
return nextObject;
}
}
@Override
public @NotNull Iterator<T> iterator() {
return new ValidMTEIterator();
}
}
|