@Override public Flow<T> interleave(Flow<T>... otherFlows) { List<Flow<T>> allFlows = new ArrayList<Flow<T>>(otherFlows.length + 1); allFlows.add(this); for (Flow<T> otherFlow : otherFlows) { allFlows.add(otherFlow); } return F.lazy(new Interleaver<T>(allFlows)); } }
@Override public LazyContinuation<T> next() { if (valueIndex == 0) { for (Flow<T> flow : flows) { if (flow.isEmpty()) return null; } } return new LazyContinuation<T>(flows.get(valueIndex).first(), nextFunction()); }
@Override public LazyContinuation<T> next() { if (valueIndex == 0) { for (Flow<T> flow : flows) { if (flow.isEmpty()) return null; } } return new LazyContinuation<T>(flows.get(valueIndex).first(), nextFunction()); }
@Override public Flow<T> interleave(Flow<T>... otherFlows) { List<Flow<T>> allFlows = new ArrayList<Flow<T>>(otherFlows.length + 1); allFlows.add(this); for (Flow<T> otherFlow : otherFlows) { allFlows.add(otherFlow); } return F.lazy(new Interleaver<T>(allFlows)); } }
private LazyFunction<T> nextFunction() { if (valueIndex < flows.size() - 1) { return new Interleaver<T>(flows, valueIndex + 1); } List<Flow<T>> nextFlows = F.flow(flows).map(new Mapper<Flow<T>, Flow<T>>() { @Override public Flow<T> map(Flow<T> element) { return element.rest(); } }).toList(); return new Interleaver<T>(nextFlows, 0); }
private LazyFunction<T> nextFunction() { if (valueIndex < flows.size() - 1) { return new Interleaver<T>(flows, valueIndex + 1); } List<Flow<T>> nextFlows = F.flow(flows).map(new Mapper<Flow<T>, Flow<T>>() { @Override public Flow<T> map(Flow<T> element) { return element.rest(); } }).toList(); return new Interleaver<T>(nextFlows, 0); }