public static final <A> Tuple2<Iterator<A>,Iterator<A>> toBufferingDuplicator(Iterator<A> iterator) { return toBufferingDuplicator(iterator,Long.MAX_VALUE); } public static final <A> Tuple2<Iterator<A>,Iterator<A>> toBufferingDuplicator(Iterator<A> iterator,long pos) {
public static final <A> Pair<Iterator<A>,Iterator<A>> toBufferingDuplicator(Iterator<A> iterator) { return toBufferingDuplicator(iterator,Long.MAX_VALUE); } public static final <A> Pair<Iterator<A>,Iterator<A>> toBufferingDuplicator(Iterator<A> iterator,long pos) {
private final static <T> Tuple2<Stream<T>,Stream<T>> duplicatePos(Stream<T> stream,int pos){ Tuple2<Iterator<T>,Iterator<T>> Tuple2 = StreamUtils.toBufferingDuplicator(stream.iterator(),pos); return new Tuple2(StreamUtils.stream(Tuple2.v1()),StreamUtils.stream(Tuple2.v2())); } /**
/** * Duplicate a Stream, buffers intermediate values, leaders may change positions so a limit * can be safely applied to the leading stream. Not thread-safe. * <pre> * {@code * Tuple2<SequenceM<Integer>, SequenceM<Integer>> copies =of(1,2,3,4,5,6).duplicate(); assertTrue(copies.v1.anyMatch(i->i==2)); assertTrue(copies.v2.anyMatch(i->i==2)); * * } * </pre> * * @return duplicated stream */ public final static <T> Tuple2<Stream<T>,Stream<T>> duplicate(Stream<T> stream){ Tuple2<Iterator<T>,Iterator<T>> Tuple2 = StreamUtils.toBufferingDuplicator(stream.iterator()); return new Tuple2(StreamUtils.stream(Tuple2.v1()),StreamUtils.stream(Tuple2.v2())); } private final static <T> Tuple2<Stream<T>,Stream<T>> duplicatePos(Stream<T> stream,int pos){
private final Pair<SequenceM<T>,SequenceM<T>> duplicatePos(int pos){ Pair<Iterator<T>,Iterator<T>> pair = StreamUtils.toBufferingDuplicator(monad.iterator(),pos); return new Pair(new SequenceM(StreamUtils.stream(pair._1())),new SequenceM(StreamUtils.stream(pair._2()))); } /**
/** * Duplicate a Stream, buffers intermediate values, leaders may change positions so a limit * can be safely applied to the leading stream. Not thread-safe. * <pre> * {@code * Pair<SequenceM<Integer>, SequenceM<Integer>> copies =of(1,2,3,4,5,6).duplicate(); assertTrue(copies.v1.anyMatch(i->i==2)); assertTrue(copies.v2.anyMatch(i->i==2)); * * } * </pre> * * @return duplicated stream */ public final Pair<SequenceM<T>,SequenceM<T>> duplicate(){ Pair<Iterator<T>,Iterator<T>> pair = StreamUtils.toBufferingDuplicator(monad.iterator()); return new Pair(new SequenceM(StreamUtils.stream(pair._1())),new SequenceM(StreamUtils.stream(pair._2()))); } private final Pair<SequenceM<T>,SequenceM<T>> duplicatePos(int pos){