@Override public List<T> toList() { if (isEmpty()) return Collections.emptyList(); return Collections.unmodifiableList(toMutableList()); }
@Override public List<T> toList() { if (isEmpty()) return Collections.emptyList(); return Collections.unmodifiableList(toMutableList()); }
@Override public int count() { if (isEmpty()){ return 0; } int count = 0; for(Flow<T> flow = this; flow != null && !flow.isEmpty(); flow = flow.rest()){ count++; } return count; }
@Override public int count() { if (isEmpty()){ return 0; } int count = 0; for(Flow<T> flow = this; flow != null && !flow.isEmpty(); flow = flow.rest()){ count++; } return count; }
@Override public Flow<T> reverse() { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).reverse(); }
@Override public Flow<T> sort() { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).sort(); }
@Override public Flow<T> sort(Comparator<T> comparator) { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).sort(comparator); }
@Override public Flow<T> reverse() { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).reverse(); }
@Override public Flow<T> sort() { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).sort(); }
@Override public Flow<T> sort(Comparator<T> comparator) { if (isEmpty()) return F.emptyFlow(); return new ArrayFlow<T>(this).sort(comparator); }
@Override public <X, Y> Flow<Y> map(Mapper2<T, X, Y> mapper, Flow<? extends X> flow) { assert mapper != null; assert flow != null; if (this.isEmpty() || flow.isEmpty()) return F.emptyFlow(); return F.lazy(new LazyMapper2<T, X, Y>(mapper, this, flow)); }
@Override public <X, Y> Flow<Y> map(Mapper2<T, X, Y> mapper, Flow<? extends X> flow) { assert mapper != null; assert flow != null; if (this.isEmpty() || flow.isEmpty()) return F.emptyFlow(); return F.lazy(new LazyMapper2<T, X, Y>(mapper, this, flow)); }