lambdaj just reached the release 2.1. This last release provides the following new features and improvements:
  • Improved closure features and syntax: this new syntax, suggested by Guillaume Bort, now makes it possible to pass closures to methods like in the following example:   withTransaction(); {     of(this).doSomethingInsideTrasaction();   }
  • Better support for arrays and iterators: now all the lambdaj methods that accept an iterable work even if you pass them an Iterator or an Array. Moreover the methods returning a List now have been paired with some similar methods that return an Iterator instead. This can be very useful especially when you don't need to use the whole returned list of objects, but you have to iterate only on some of them.
  • Flatten: this new lambdaj function recursively descends through nested Collections and create a flat Collection of all of the leaves.
  • Support for BigInteger and BigDecimal
  • Projection: this feature allows to project the property values of a given object on an object of a different class by invoking the constructor of this target class. It can be useful for some common patterns in Web applications like to quickly populate a list of Data Transfer Objects starting from the corresponding Business Objects.
  • Improved heuristic used to deal with final classes
More details about this new release are available in the lambdaj 2.1 release notes wiki page.