@Override public Observable<Output> call(Observable<Bucket> window) { return window.scan(getEmptyOutputValue(), reduceBucket).skip(numBuckets); } };
.scan(new Func2<List<Image>, List<Image>, List<Image>>() { @Override public List<Image> call(List<Image> images, List<Image> images2) {
protected BucketedCumulativeCounterStream(HystrixEventStream<Event> stream, int numBuckets, int bucketSizeInMs, Func2<Bucket, Event, Bucket> reduceCommandCompletion, Func2<Output, Bucket, Output> reduceBucket) { super(stream, numBuckets, bucketSizeInMs, reduceCommandCompletion); this.sourceStream = bucketedStream .scan(getEmptyOutputValue(), reduceBucket) .skip(numBuckets) .doOnSubscribe(new Action0() { @Override public void call() { isSourceCurrentlySubscribed.set(true); } }) .doOnUnsubscribe(new Action0() { @Override public void call() { isSourceCurrentlySubscribed.set(false); } }) .share() //multiple subscribers should get same data .onBackpressureDrop(); //if there are slow consumers, data should not buffer }
/** * Returns the Observable sequence of trees created by progressively adding * entries. * * @param entries * the entries to add * @return a sequence of trees */ public Observable<RTree<T, S>> add(Observable<Entry<T, S>> entries) { return entries.scan(this, new Func2<RTree<T, S>, Entry<T, S>, RTree<T, S>>() { @Override public RTree<T, S> call(RTree<T, S> tree, Entry<T, S> entry) { return tree.add(entry); } }); }
/** * Returns the Observable sequence of trees created by progressively deleting * entries. * * @param entries * the entries to add * @param all * if true delete all matching otherwise just first matching * @return a sequence of trees */ public Observable<RTree<T, S>> delete(Observable<Entry<T, S>> entries, final boolean all) { return entries.scan(this, new Func2<RTree<T, S>, Entry<T, S>, RTree<T, S>>() { @Override public RTree<T, S> call(RTree<T, S> tree, Entry<T, S> entry) { return tree.delete(entry, all); } }); }
public static void main(String... args) { Observable.range(0, 10).reduce(new ArrayList<>(), (list, i) -> { list.add(i); return list; }).forEach(System.out::println); System.out.println("... vs ..."); Observable.range(0, 10).scan(new ArrayList<>(), (list, i) -> { list.add(i); return list; }).forEach(System.out::println); } }
public static Observable<Double> solveWithNewtonsMethod(final Func1<Double, Double> f, final Func1<Double, Double> dfdx, double x0) { return Observable.just(1).repeat().scan(x0, new Func2<Double, Integer, Double>() { @Override public Double call(Double xn, Integer n) { return xn - f.call(xn) / dfdx.call(xn); } }); }
public static Observable<Double> solveWithNewtonsMethod(final Func1<Double, Double> f, final Func1<Double, Double> dfdx, double x0) { return Observable.just(1).repeat().scan(x0, new Func2<Double, Integer, Double>() { @Override public Double call(Double xn, Integer n) { return xn - f.call(xn) / dfdx.call(xn); } }); }
@Override public Observable<? extends Notification<?>> call(Observable<? extends Notification<?>> ts) { return ts.scan(Notification.createOnNext(0), new Func2<Notification<Integer>, Notification<?>, Notification<Integer>>() { @SuppressWarnings("unchecked") @Override public Notification<Integer> call(Notification<Integer> n, Notification<?> term) { final int value = n.getValue(); if (predicate.call(value, term.getThrowable()).booleanValue()) return Notification.createOnNext(value + 1); else return (Notification<Integer>) term; } }); } }
@Override public void run() { Observable.range(1, 10).scan(new Func2<Integer, Integer, Integer>() { @Override public Integer call(Integer integer, Integer integer2) { return integer + integer2; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { log(integer); } }); } });
public static <T> Observable<List<Integer>> permutations(int size) { List<Integer> indexes = new ArrayList<Integer>(size); for (int i = 0; i < size; i++) { indexes.add(i); } return Observable.from(Permutations.iterable(indexes)).scan(indexes, new Func2<List<Integer>, Swap<Integer>, List<Integer>>() { @Override public List<Integer> call(List<Integer> a, Swap<Integer> swap) { List<Integer> b = new ArrayList<Integer>(a); b.set(swap.left(), a.get(swap.right())); b.set(swap.right(), a.get(swap.left())); return b; } }); }
@Override public Observable<Output> call(Observable<Bucket> window) { return window.scan(getEmptyOutputValue(), reduceBucket).skip(numBuckets); } };
@Override public Observable<Statistics> call(Observable<T> o) { return o.scan(Statistics.create(), Functions.collectStats()); } };
@Override public Observable<Statistics> call(Observable<T> o) { return o.scan(Statistics.create(), Functions.collectStats()); } };
@Override public Observable<Pair<T, Statistics>> call(Observable<T> source) { return source.scan(Pair.create((T) null, Statistics.create()), new Func2<Pair<T, Statistics>, T, Pair<T, Statistics>>() { @Override public Pair<T, Statistics> call(Pair<T, Statistics> pair, T t) { return Pair.create(t, pair.b().add(function.call(t))); } }).skip(1); } };
public static <T extends Fix> Transformer<T, T> ignoreOutOfOrderFixes(final boolean enabled) { return o -> { return o.scan((a, b) -> { if (!enabled || b.time() > a.time()) return b; else return a; }).distinctUntilChanged(); }; }
@Override public Observable<Pair<T, Statistics>> call(Observable<T> source) { return source.scan(Pair.create((T) null, Statistics.create()), new Func2<Pair<T, Statistics>, T, Pair<T, Statistics>>() { @Override public Pair<T, Statistics> call(Pair<T, Statistics> pair, T t) { return Pair.create(t, pair.b().add(function.call(t))); } }).skip(1); } };
Observable<String> speak(String quote, long millisPerChar) { String[] tokens = quote.replaceAll("[:,]", "").split(" "); Observable<String> words = Observable.from(tokens); Observable<Long> absoluteDelay = words .map(String::length) .map(len -> len * millisPerChar) .scan((total, current) -> total + current); return words .zipWith(absoluteDelay.startWith(0L), Pair::of) .flatMap(pair -> just(pair.getLeft()) .delay(pair.getRight(), MILLISECONDS)); }
@Test public void sample_431() throws Exception { Observable<BigInteger> factorials = Observable .range(2, 100) .scan(BigInteger.ONE, (big, cur) -> big.multiply(BigInteger.valueOf(cur))); }
@Test public void sample_419() throws Exception { Observable<Long> progress = transferFile(); Observable<Long> totalProgress = progress .scan((total, chunk) -> total + chunk); totalProgress .toBlocking() .subscribe(System.out::println); }