StreamEx v0.4.0 Release Notes

    • Introduced the concept of short-circuiting collectors.
    • StreamEx/EntryStream.collect(Collector) method works as short-circuit operation if short-circuiting collector is passed.
    • MoreCollectors.first/head collectors are short-circuiting now.
    • MoreCollectors.groupingByEnum collector may short-circuit if downstream collector is short-circuiting.
    • MoreCollectors.pairing collector may short-circuit if both downstream collectors are short-circuiting.
    • ➕ Added new short-circuiting collectors: onlyOne, intersecting, toEnumSet, andingInt, andingLong.
    • ➕ Added new collectors: filtering, groupingBy (with domain specification) which short-circuit when downstream collector is short-circuiting.
    • ➕ Added collectors mapping, collectingAndThen, partitioningBy which mimic standard JDK collectors, but short-circuit when downstream collector is short-circuiting.
    • ➕ Added indexOf methods for all stream types.
    • ➕ Added StreamEx/EntryStream.foldLeft/foldRight methods without identity argument.
    • ➕ Added StreamEx/EntryStream.scanLeft/scanRight methods without identity argument.
    • ➕ Added StreamEx.cartesianProduct/cartesianPower methods with reduction operator.
    • ➕ Added IntStreamEx/LongStreamEx.range/rangeClosed methods with additional step parameter.
    • ➕ Added IntStreamEx/LongStreamEx/DoubleStreamEx.foldLeft methods.
    • 🔀 Methods StreamEx/EntryStream.toMap/toSortedMap/toCustomMap without merge function now produce better exception message in the case of duplicate keys.
    • 🔀 Methods StreamEx/EntryStream.toMap/toSortedMap/toCustomMap accepting merge function are not guaranteed to return ConcurrentMap for parallel streams now. They however guarantee now the correct merging order for non-commutative merger functions.
    • Methods StreamEx/EntryStream.grouping* are not guaranteed to return the ConcurrentMap for parallel streams now. They however guarantee now the correct order of downstream collection.
    • 🚀 Methods StreamEx.ofEntries are declared as deprecated and may be removed in future releases!
    • 🚚 Deprecated methods EntryStream.mapEntryKeys/mapEntryValues are removed!
    • 📚 Updated documentation