@Override public boolean equals(Object x) { if (this == x) { return true; } if (!(x instanceof TimeSeries)) { return false; } TimeSeries that = (TimeSeries) x; BiFunction<V, V, Boolean> f = WeakLogic::weakEquals; TimeSeries aux = merge(this, that, f); return Boolean.TRUE.equals(aux.apply(null)) && (aux.size() == 1); }
@Override public boolean equals(Object x) { if (this == x) { return true; } if (!(x instanceof TimeSeries)) { return false; } TimeSeries that = (TimeSeries) x; BiFunction<V, V, Boolean> f = WeakLogic::weakEquals; TimeSeries aux = merge(this, that, f); return Boolean.TRUE.equals(aux.apply(null)) && (aux.size() == 1); }
/** * @param tv the first time series * @param tw the second time series * @param f a function mapping V x V -> U (e.g. x, y -> x <= y) * @param <T> type of timestamps * @param <V> type of values * @param <U> return type of f * @return a new time series unioning all time stamps given, * the value being the result of f (e.g. lessThan, equals) */ public static <T extends Comparable<T>, V, U> TimeSeries<T, U> merge(TimeSeries<T, V> tv, TimeSeries<T, V> tw, BiFunction<V, V, U> f) { Iterator<Pair<T, List<V>>> aux1 = asIterator(merge(asList(tv, tw))); Iterator<Pair<T, U>> aux2 = map(aux1, (Pair<T, List<V>> p) -> pairOf(p.getFirst(), f.apply(p.getSecond().get(0), p.getSecond().get(1)))); return new TimeSeries<>(aux2); }
/** * @param tv the first time series * @param tw the second time series * @param f a function mapping V x V -> U (e.g. x, y -> x <= y) * @param <T> type of timestamps * @param <V> type of values * @param <U> return type of f * @return a new time series unioning all time stamps given, * the value being the result of f (e.g. lessThan, equals) */ public static <T extends Comparable<T>, V, U> TimeSeries<T, U> merge(TimeSeries<T, V> tv, TimeSeries<T, V> tw, BiFunction<V, V, U> f) { Iterator<Pair<T, List<V>>> aux1 = asIterator(merge(asList(tv, tw))); Iterator<Pair<T, U>> aux2 = map(aux1, (Pair<T, List<V>> p) -> pairOf(p.getFirst(), f.apply(p.getSecond().get(0), p.getSecond().get(1)))); return new TimeSeries<>(aux2); }