private int calcIndex() { if(isReverse()) { return max - 1; }else{ return start; } }
@Override public ReversingIntArraySpliterator<Integer> invert() { setReverse(!isReverse()); index = calcIndex(); return this; }
@Override public ReversableSpliterator copy() { return new ReversingRangeIntSpliterator( min, max, step,reverse,start); }
@Override public ReversableSpliterator<java.lang.Integer> copy() { return new ReversingIntArraySpliterator<>( array, start,max,reverse); }
public ReversingIntArraySpliterator(int[] array, int start, int max, boolean reverse) { this.array = array; this.reverse=reverse; this.max = Math.min(array.length,max); this.start= Math.max(0,start); this.index = calcIndex(); }
@Override public ReversingIntArraySpliterator<Integer> invert() { setReverse(!isReverse()); index = calcIndex(); return this; }
@Override public ReversableSpliterator invert() { return new ReversingRangeIntSpliterator(min,max,step,!reverse); }
/** * @param values ints to populate Stream from * @return ReactiveSeq of multiple Integers */ public static ReactiveSeq<Integer> ofInts(int... values){ return fromSpliterator(new ReversingIntArraySpliterator<>(values,0,values.length,false)); } /*
private int calcIndex() { if(isReverse()) { return max - 1; }else{ return start; } }
public ReversingIntArraySpliterator(int[] array, int start, int max, boolean reverse) { this.array = array; this.reverse=reverse; this.max = Math.min(array.length,max); this.start= Math.max(0,start); this.index = calcIndex(); }
public static ReactiveSeq<Integer> range(final int start, final int step,final int end) { if(start>end) return range(end,step,start); final ReversingRangeIntSpliterator range = new ReversingRangeIntSpliterator( start, end, step,false); return Streams.reactiveSeq(range, Optional.ofNullable(range)); } public static ReactiveSeq<Long> rangeLong(final long start, final long step,final long end) {
/** * @param values ints to populate Stream from * @return ReactiveSeq of multiple Integers */ public static ReactiveSeq<Integer> ofInts(int... values){ return ReactiveSeq.fromSpliterator(new ReversingIntArraySpliterator<>(values,0,values.length,false)); } /*
/** * Create an efficiently reversable Sequence that produces the integers * between skip and take * * @param start * Number of range to skip from * @param end * Number for range to take at * @return Range ReactiveSeq */ public static ReactiveSeq<Integer> range(final int start, final int end) { if(start>end) return range(end,start); final ReversingRangeIntSpliterator range = new ReversingRangeIntSpliterator( start, end, 1,false); return Streams.reactiveSeq(range, Optional.ofNullable(range)); } public static ReactiveSeq<Integer> range(final int start, final int step,final int end) {
@Override public ReversableSpliterator<java.lang.Integer> copy() { return new ReversingIntArraySpliterator<>( array, start,max,reverse); }
@Override public ReversableSpliterator copy() { return new ReversingRangeIntSpliterator( min, max, step,reverse,start); }
/** * @param values ints to populate Stream from * @return ReactiveSeq of multiple Integers */ public static ReactiveSeq<Integer> ofInts(int... values){ return ReactiveSeq.fromSpliterator(new ReversingIntArraySpliterator<>(values,0,values.length,false)); } /*
@Override public ReversableSpliterator invert() { return new ReversingRangeIntSpliterator(min,max,step,!reverse); }
/** * @param values ints to populate Stream from * @return ReactiveSeq of multiple Integers */ public static ReactiveSeq<Integer> ofInts(int... values){ return fromSpliterator(new ReversingIntArraySpliterator<>(values,0,values.length,false)); } /*
public static ReactiveSeq<Integer> range(final int start, final int step,final int end) { if(start>end) return range(end,step,start); final ReversingRangeIntSpliterator range = new ReversingRangeIntSpliterator( start, end, step,false); return Streams.reactiveSeq(range, Optional.ofNullable(range)); } public static ReactiveSeq<Long> rangeLong(final long start, final long step,final long end) {
/** * Create an efficiently reversable Sequence that produces the integers * between skip and take * * @param start * Number of range to skip from * @param end * Number for range to take at * @return Range ReactiveSeq */ public static ReactiveSeq<Integer> range(final int start, final int end) { if(start>end) return range(end,start); final ReversingRangeIntSpliterator range = new ReversingRangeIntSpliterator( start, end, 1,false); return Streams.reactiveSeq(range, Optional.ofNullable(range)); } public static ReactiveSeq<Integer> range(final int start, final int step,final int end) {