-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIterators.java
More file actions
26 lines (22 loc) · 764 Bytes
/
Iterators.java
File metadata and controls
26 lines (22 loc) · 764 Bytes
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
package picard.util;
import com.google.common.base.Optional;
import java.util.Iterator;
/**
* @author mccowan
*/
public class Iterators {
public static <E> AtomicIterator<E> atomicIteratorOf(final Iterable<E> backingIterable) {
return atomicIteratorOf(backingIterable.iterator());
}
public static <E> AtomicIterator<E> atomicIteratorOf(final Iterator<E> backingIterator) {
final Object monitor = new Object();
return new AtomicIterator<E>() {
@Override
public Optional<E> next() {
synchronized (monitor) {
return backingIterator.hasNext() ? Optional.fromNullable(backingIterator.next()) : Optional.<E>absent();
}
}
};
}
}