public Stream<T> distinct() {
        final ArrayList<T> passed = new ArrayList<>();
        return filter(new Func1<T, Boolean>() {
            @Override
            public Boolean call(T value) {
                if (passed.contains(value))
                    return false;
                passed.add(value);
                return true;
            }
        });
    }
public Stream < T > distinct ( ) { final ArrayList < T > passed = new ArrayList < > ( ) ; return filter ( new Func1 < T , Boolean > ( ) { @ Override public Boolean call ( T value ) { if ( passed . contains ( value ) ) return false ; passed . add ( value ) ; return true ; } } ) ; }
Returns a new stream that filters out duplicate items off the current stream.
<p/>
This operator keeps a list of all items that has been passed to
compare it against next items.

@return a new stream that filters out duplicate items off the current stream.