Devoxx - filter, partition and offset

Stephen Colebourne scolebourne at joda.org
Wed Apr 3 06:40:21 PDT 2013


On 3 April 2013 12:36, Stephen Colebourne <scolebourne at joda.org> wrote:
> It didn't come up in the Devoxx lab, but I found the filter() method
> confusing when reading code in the talks. It was not obvious to me
> whether it was filtering in or out.
>
> I was then surprised that there was only one method in the API for
> filtering, rather than two - one to remove and one to retain. While
> clearly they are a logical not, in code readbility terms its typically
> a lot clearer.
>
> Perhaps keep() and reject()? I'm sure there are other names, but
> filter alone feels very unclear. (I can't remember which it is now).

Of the things in my email, its this single filter() method that most
bothers me (and wasn't commented on).

The method is learned knowledge:
 stream.filter(a > 6)...

There is no way from just reading this to *know* whether it is keeping
or rejecting a > 6. I have to rack my brain and remember which way
around it is.

Yes its one extra method or longer. But its much more readable:
 stream.filterKeeping(a > 6)...

Stephen


More information about the lambda-dev mailing list