public Stream map(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { if (iterator.hasNext()) { Object obj = iterator.next(); next = le.invoke(obj); foundNext = true; } } }; return new Stream(downStream); }
public Stream peek(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { if (iterator.hasNext()) { Object obj = iterator.next(); le.invoke(obj); next = obj; foundNext = true; } } }; return new Stream(downStream); }
public Stream map(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { if (iterator.hasNext()) { Object obj = iterator.next(); next = le.invoke(obj); foundNext = true; } } }; return new Stream(downStream); }
public Stream filter(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { while (iterator.hasNext()) { Object obj = iterator.next(); if (ELSupport.coerceToBoolean(null, le.invoke(obj), true).booleanValue()) { next = obj; foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream filter(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { while (iterator.hasNext()) { Object obj = iterator.next(); if (ELSupport.coerceToBoolean(le.invoke(obj), true).booleanValue()) { next = obj; foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream peek(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { @Override protected void findNext() { if (iterator.hasNext()) { Object obj = iterator.next(); le.invoke(obj); next = obj; foundNext = true; } } }; return new Stream(downStream); }
public Stream flatMap(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { private Iterator<?> inner; @Override protected void findNext() { while (iterator.hasNext() || (inner != null && inner.hasNext())) { if (inner == null || !inner.hasNext()) { inner = ((Stream) le.invoke(iterator.next())).iterator; } if (inner.hasNext()) { next = inner.next(); foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream sorted() { Iterator<Object> downStream = new OpIterator() { private Iterator<Object> sorted = null; @Override protected void findNext() { if (sorted == null) { sort(); } if (sorted.hasNext()) { next = sorted.next(); foundNext = true; } } @SuppressWarnings({ "rawtypes", "unchecked" }) private final void sort() { List list = new ArrayList<>(); while (iterator.hasNext()) { list.add(iterator.next()); } Collections.sort(list); sorted = list.iterator(); } }; return new Stream(downStream); }
public Stream flatMap(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { private Iterator<?> inner; @Override protected void findNext() { while (iterator.hasNext() || (inner != null && inner.hasNext())) { if (inner == null || !inner.hasNext()) { inner = ((Stream) le.invoke(iterator.next())).iterator; } if (inner.hasNext()) { next = inner.next(); foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream sorted(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { private Iterator<Object> sorted = null; @Override protected void findNext() { if (sorted == null) { sort(le); } if (sorted.hasNext()) { next = sorted.next(); foundNext = true; } } @SuppressWarnings({ "rawtypes", "unchecked" }) private final void sort(LambdaExpression le) { List list = new ArrayList<>(); Comparator<Object> c = new LambdaExpressionComparator(le); while (iterator.hasNext()) { list.add(iterator.next()); } Collections.sort(list, c); sorted = list.iterator(); } }; return new Stream(downStream); }
public Stream sorted() { Iterator<Object> downStream = new OpIterator() { private Iterator<Object> sorted = null; @Override protected void findNext() { if (sorted == null) { sort(); } if (sorted.hasNext()) { next = sorted.next(); foundNext = true; } } @SuppressWarnings({ "rawtypes", "unchecked" }) private final void sort() { List list = new ArrayList<>(); while (iterator.hasNext()) { list.add(iterator.next()); } Collections.sort(list); sorted = list.iterator(); } }; return new Stream(downStream); }
public Stream sorted(final LambdaExpression le) { Iterator<Object> downStream = new OpIterator() { private Iterator<Object> sorted = null; @Override protected void findNext() { if (sorted == null) { sort(le); } if (sorted.hasNext()) { next = sorted.next(); foundNext = true; } } @SuppressWarnings({ "rawtypes", "unchecked" }) private final void sort(LambdaExpression le) { List list = new ArrayList<>(); Comparator<Object> c = new LambdaExpressionComparator(le); while (iterator.hasNext()) { list.add(iterator.next()); } Collections.sort(list, c); sorted = list.iterator(); } }; return new Stream(downStream); }
public Stream distinct() { Iterator<Object> downStream = new OpIterator() { private Set<Object> values = new HashSet<>(); @Override protected void findNext() { while (iterator.hasNext()) { Object obj = iterator.next(); if (values.add(obj)) { next = obj; foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream distinct() { Iterator<Object> downStream = new OpIterator() { private Set<Object> values = new HashSet<>(); @Override protected void findNext() { while (iterator.hasNext()) { Object obj = iterator.next(); if (values.add(obj)) { next = obj; foundNext = true; break; } } } }; return new Stream(downStream); }
public Stream substream(final Number start, final Number end) { Iterator<Object> downStream = new OpIterator() { private final int startPos = start.intValue(); private final int endPos = end.intValue(); private int itemCount = 0; @Override protected void findNext() { while (itemCount < startPos && iterator.hasNext()) { iterator.next(); itemCount++; } if (itemCount < endPos && iterator.hasNext()) { itemCount++; next = iterator.next(); foundNext = true; } } }; return new Stream(downStream); }
public Stream substream(final Number start, final Number end) { Iterator<Object> downStream = new OpIterator() { private final int startPos = start.intValue(); private final int endPos = end.intValue(); private int itemCount = 0; @Override protected void findNext() { while (itemCount < startPos && iterator.hasNext()) { iterator.next(); itemCount++; } if (itemCount < endPos && iterator.hasNext()) { itemCount++; next = iterator.next(); foundNext = true; } } }; return new Stream(downStream); }
@Override public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) { if ("stream".equals(method) && params.length == 0) { if (base.getClass().isArray()) { context.setPropertyResolved(true); return new Stream(new ArrayIterator(base)); } else if (base instanceof Collection) { context.setPropertyResolved(true); @SuppressWarnings("unchecked") Collection<Object> collection = (Collection<Object>) base; return new Stream(collection.iterator()); } } // Not for handling by this resolver return null; }
@Override public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) { if ("stream".equals(method) && params.length == 0) { if (base.getClass().isArray()) { context.setPropertyResolved(true); return new Stream(new ArrayIterator(base)); } else if (base instanceof Collection) { context.setPropertyResolved(true); @SuppressWarnings("unchecked") Collection<Object> collection = (Collection<Object>) base; return new Stream(collection.iterator()); } } // Not for handling by this resolver return null; }