Eclipse Collections v9.2.0 Release Notes

Release Date: 2018-05-21 // almost 6 years ago
  • ๐Ÿš‘ This is the 9.2.0 minor release. This release was entirely driven by the Eclipse Collections user community. The main theme of this release was to add functionalities suggested by the community and bug fixes for a few critical issues reported by the users.

    ๐Ÿ†• New Functionality

    • Implemented flatCollectWith() on RichIterable.
    • Implemented toSortedMapBy() on RichIterable.
    • Implemented Bag#selectDuplicates().
    • Implemented Bag#selectUnique().
    • Implemented OrderedMapAdapter, the first implementation of MutableOrderedMap.
    • Implemented chunk() on Primitive Iterables.
    • Implemented newEmpty() on MutablePrimitiveCollection.
    • Implemented PrimitiveBag#selectDuplicates().
    • Implemented PrimitiveBag#selectUnique().
    • Implemented toStringOfItemToCount() on Primitive Bags.
    • โž• Added MultiReader factories to Sets factory.
    • โž• Added MultiReader factories to Bags factory.
    • Implemented summarizeDouble(), summarizeFloat(), summarizeLong(), summarizeInt on Procedures2.
    • Implemented aggregateBy() on Collectors2.
    • Implemented countByEach() on Collectors2.
    • Implemented assertPostSerializedEqualsHashCodeAndToString() on Verify.
    • โž• Added jcstress-based tests for Concurrent Collections.

    Optimizations

    • โšก๏ธ Optimized zip() by pre-sizing target.
    • โšก๏ธ Optimized UnifiedMap#detectOptional(org.eclipse.collections.api.block.predicate.Predicate2) to not use an iterator.
    • โšก๏ธ Optimized groupByUniqueKey() by pre-sizing the target maps.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed PrimitiveHashSet#iterator()#remove() to not rehash.
    • ๐Ÿ›  Fixed PrimitiveHashMap#addToValue() to return correct value after rehash and grow.
    • ๐Ÿ›  Fixed ConcurrentHashMap#iterator() with size close to zero.
    • ๐Ÿ›  Fixed ConcurrentHashMapUnsafe#iterator() with size close to zero.
    • ๐Ÿ›  Fixed equals() and hashCode() in IntInterval to handle edge case for negative from, to, step.
    • ๐Ÿ›  Fixed invalid cast in UnifiedSet#trimToSize().
    • ๐Ÿ›  Fixed toImmutable(), asUnmodifiable() implementations in synchronized primitive collections and maps.

    Tech Debt Reduction

    • Made Primitive Collections non-final.
    • Marked index methods non-final in UnifiedMap, UnifiedMapWithHashingStrategy, UnifiedSet and UnifiedSetWithHashingStrategy.
    • Marked HashingStrategy protected in UnifiedMapWithHashingStrategy and UnifiedSetWithHashingStrategy.
    • โšก๏ธ Updated UnifiedMap, UnifiedMapWithHashingStrategy, UnifiedSet and UnifiedSetWithHashingStrategy to use newEmpty().
    • ๐Ÿ›  Fixed static code analysis inspection violations.
    • ๐Ÿ›  Fixed Javadoc and whitespace formatting.
    • โœ‚ Removed unused imports from Primitive classes.
    • โœ‚ Removed redundant imports from Primitive classes.
    • ๐Ÿ’… Enabled CheckStyle analysis for generated code.
    • โœ‚ Removed unnecessary override in test for selectByOccurrences().
    • โœ‚ Removed Java-8 check from tests.
    • โž• Added UnifiedMapWithHashingStrategyNoIteratorTest.

    โฌ†๏ธ Library Upgrades

    • โฌ†๏ธ Upgraded JMH to 1.19
    • ๐Ÿ’… Upgraded CheckStyle to 8.8.
    • โฌ†๏ธ Upgraded JaCoCo to 0.8.0.

    Acquiring Eclipse Collections

    Maven

    \<dependency\> \<groupId\>org.eclipse.collections\</groupId\> \<artifactId\>eclipse-collections-api\</artifactId\> \<version\>9.2.0\</version\> \</dependency\> \<dependency\> \<groupId\>org.eclipse.collections\</groupId\> \<artifactId\>eclipse-collections\</artifactId\> \<version\>9.2.0\</version\> \</dependency\> \<dependency\> \<groupId\>org.eclipse.collections\</groupId\> \<artifactId\>eclipse-collections-testutils\</artifactId\> \<version\>9.2.0\</version\> \<scope\>test\</scope\> \</dependency\> \<dependency\> \<groupId\>org.eclipse.collections\</groupId\> \<artifactId\>eclipse-collections-forkjoin\</artifactId\> \<version\>9.2.0\</version\> \</dependency\>
    

    Gradle

    compile 'org.eclipse.collections:eclipse-collections-api:9.2.0'compile 'org.eclipse.collections:eclipse-collections:9.2.0'testCompile 'org.eclipse.collections:eclipse-collections-testutils:9.2.0'compile 'org.eclipse.collections:eclipse-collections-forkjoin:9.2.0'
    

    Ivy

    \<dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="9.2.0" /\> \<dependency org="org.eclipse.collections" name="eclipse-collections" rev="9.2.0" /\> \<dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="9.2.0" /\> \<dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="9.2.0"/\>
    

    OSGi Bundle

    Eclipse software repository location: http://download.eclipse.org/collections/9.2.0/repository