Eclipse Collections Versions Save

Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.

11.1.0

1 year ago

This is the 11.1.0 minor release.

Central theme of this release is addition of new APIs, features as requested by the community and decrease Tech Debt.

The Eclipse Collections team gives a huge thank you to everyone who participated in this release.

New Functionality


  • Added Bag.distinctView().
  • Added Bags.mutable.withInitialCapacity.
  • Added forEachInBoth to Primitive Lists.
  • Added MultiReader to Bags factory in API module.
  • Added MultiReader to Lists factory in API module.
  • Added MultiReader to Sets factory in API module.
  • Added Primitive Bag factories in API module.
  • Added Primitive Set factories in API module.
  • Added Primitive Stack factories in API module.
  • Added factory for ObjectPrimitiveHashMapWithHashingStrategy.
  • Added withInitialCapacity api in mutableObjectPrimitiveHashingStrategyMapFactory.
  • Added ability to create Hashing Strategy Sets, Maps and Bags using Function.
  • Added injectInto for primitive types to primitive iterables.
  • Added injectIntoKeyValue to MapIterable.
  • Added injectIntoKeyValue to objectPrimitiveMap.
  • Added injectIntoKeyValue to primitiveObjectMap.
  • Added injectIntoKeyValue to primitivePrimitiveMap.
  • Added mutable reduction scenario to injectIntoKeyValue test for primitive maps.
  • Added object to primitive map factory to API module.
  • Added of and with factory methods to object -> primitive map factories.
  • Added of and with factory methods to primitive -> primitive and primitive -> object map factories.
  • Added withKeyMultiValues to MutableMultimap and subtypes.
  • Added withKeyValue to MutableMultimap and subtypes.
  • Added getAndPut to mutableObjectPrimitiveMap to retrieve the value associated with the key if one exists.
  • Added peekAndPop methods in ImmutableStack.
  • Added fused method for collect + makeString.
  • Added missing implementations of toString().
  • Added selectWithIndex and rejectWithIndex to Ordered Primitive Iterables.
  • Implemented containsAny, containsNone, containsAnyIterable, containsNoneIterable on RichIterable.

Optimizations


  • Optimized asParallel() for immutable sets in O(1) instead of O(n).
  • Optimized some implementations of toString() that were delegating to iterators.
  • Improved equals() performance for Set implementations.

Tech Debt Reduction


  • Replaced implementation factories and dependencies with API factories where possible.
  • Fixed CheckStyle configuration for NewlineAtEndOfFile so that it works across operating systems.
  • Made forEach a default method on primitiveIterable.stg.
  • Made noneSatisfy a default method on primitiveIterable.stg.
  • Removed unnecessary implementations of toSortedList/Set/Bag/MapBy.
  • Disambiguate and deprecate primitive injectInto methods on RichIterable.
  • Improved code generation logic into separate goals for sources, test-sources, and resources.
  • Improved PIT mutation test coverage.
  • Improved overall test coverage by adding missing tests.

Documentation Changes


  • Updated reference guide and convert to AsciiDoc.
  • Updated CONTRIBUTING.md to reflect contribution guidelines around commit sign-off.
  • Updated README.md with OSS projects that use Eclipse Collections.

Build Changes


  • Upgraded CheckStyle from 9.1 to 10.1.
  • Upgraded actions/cache from 2.1.7 to 3.0.2.
  • Upgraded checkstyle-configuration.xml from 1.2 schema to 1.3 schema.
  • Upgraded setup-java v3.
  • Upgraded actions/cache from 2.1.6 to 2.1.7.
  • Upgraded actions/checkout from 2 to 3.
  • Upgraded actions/upload-artifact from 2.2.4 to 3.
  • Upgraded maven-plugin-api from 3.6.3 to 3.8.5.
  • Upgraded maven-shade-plugin from 3.2.2 to 3.2.4.
  • Upgraded maven-site-plugin from 3.9.0 to 3.11.0.
  • Switched to oracle-actions to download JDK for EA builds.
  • Turned on additional CheckStyle rules and IntelliJ inspections.
  • Removed FindBugs build from GitHub workflows.

Note


We have taken all the measures to ensure all features are captured in the release notes. However, release notes compilation is manual, so it is possible that a commit might be missed. For a comprehensive list of commits please go through the commit log.

Acquiring Eclipse Collections

Maven

<dependency>
 <groupId>org.eclipse.collections</groupId>
 <artifactId>eclipse-collections-api</artifactId>
 <version>11.1.0</version>
</dependency>

<dependency>
 <groupId>org.eclipse.collections</groupId>
 <artifactId>eclipse-collections</artifactId>
 <version>11.1.0</version>
</dependency>

<dependency>
 <groupId>org.eclipse.collections</groupId>
 <artifactId>eclipse-collections-testutils</artifactId>
 <version>11.1.0</version>
 <scope>test</scope>
</dependency>

<dependency>
 <groupId>org.eclipse.collections</groupId>
 <artifactId>eclipse-collections-forkjoin</artifactId>
 <version>11.1.0</version>
</dependency>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:11.1.0'
implementation 'org.eclipse.collections:eclipse-collections:11.1.0'
testImplementation 'org.eclipse.collections:eclipse-collections-testutils:11.1.0'
implementation 'org.eclipse.collections:eclipse-collections-forkjoin:11.1.0'

Ivy

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

OSGi Bundle

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

11.0.0

2 years ago

This is the 11.0.0 major release.

Central theme of this release is addition of new APIs, features as requested by the community and decrease Tech Debt.

The Eclipse Collections team gives a huge thank you to everyone who participated in this release.

New Functionality


  • Added toImmutableList/Set/Bag/Map/BiMap to RichIterable.
  • Added toImmutableSortedList/Set/Bag to RichIterable.
  • Added toImmutableSortedBag/List/Set with Comparator to RichIterable.
  • Added toImmutableSortedBagBy/ListBy/SetBy with Function to RichIterable.
  • Added selectWithIndex and rejectWithIndex to OrderedIterable and ListIterable.
  • Added putAllMapIterable method to MutableMap.
  • Added withMapIterable to MutableMap.
  • Added newWithMap and newWithMapIterable to ImmutableMap.
  • Added anySatisfyWithOccurrences, allSatisfyWithOccurrences, noneSatisfyWithOccurrences, detectWithOccurrences to Bag.
  • Added covariant overrides for sortThis().
  • Added covariant return types to methods in MultiReaderList that return this.
  • Added primitive singleton iterator.
  • Added union, intersect, difference, symmetric difference, cartesianProduct , isSubsetOf, isProperSubsetOf to primitive sets.
  • Added containsAny and containsNone on primitive iterables.
  • Added toSortedList(Comparator) and toSortedListBy(Function) to primitive iterables.
  • Added isEqual and isSame to Pair and Triple as default methods.
  • Added converters from Pair and Triple to List types.
  • Added toImmutableSortedBagBy to Collectors2.
  • Added toImmutableSortedMap and toImmutableSortedMapBy to Collectors2.
  • Added toSortedMap and toSortedMapBy to Collectors2.
  • Added Norwegian translation for the Eclipse Collections website.
  • Added ClassComparer utility.

Optimizations


  • Optimized ImmutableListFactoryImpl.withAll(Iterable).
  • Optimized containsAll on primitive iterables.
  • Optimized primitive hash set newSet and withAll.
  • Optimized sumByLong and sumByInt Primitive methods for Bags.
  • Optimized toImmutable on primitive sets.
  • Optimized union and difference on SetIterables.
  • Added enhanced for-loop syntax wherever as possible.

Tech Debt Reduction


  • Deprecated ImmutableArrayStack.
  • Fixed bug with noneSatisfy for ImmutableBooleanEmptySet.
  • Fixed compiler errors for JDK-15-EA.
  • Fixed return types of aggregateBy().
  • Fixed types on Multimap.*MultiValues().
  • Fixed primitive hash map values collections removed for special key zero.
  • Fixed CollectIterable detect methods.
  • Added missing overrides for toImmutable methods on synchronized primitive object maps.
  • Added missing overrides of aggregateBy() and aggregateInPlaceBy().
  • Added documentation on serializing Eclipse Collections with jackson.
  • Added logic to throw UnsupportedOperationException on calling withMap method in FixedSizeMap. This is a breaking change.
  • Made org.eclipse.collections.impl.list.Interval#goForward private. This is a breaking change.
  • Replaced HashingStrategies.longHashCode with Java 8 Long.hashCode. This is a breaking change.
  • Deleted version.properties as the file is no longer needed.
  • Removed extra calls to map.get in sumByDoubleFunction and sumByFloatFunction.
  • Removed implementations of OrderedIterable.toStack() that can use the default implementation instead.
  • Removed implementations of aggregateBy and aggregateInPlaceBy that can use default implementations instead.
  • Removed references to deleted classes in findbugs-exclude file.

Removed Functionality


  • Removed Verify.assertThrows() which takes a Runnable in favor of Assert.assertThrows(). This is a breaking change.
  • Removed assertNotEquals() from Verify as Assert already has the same API. This is a breaking change.

Build Changes


  • Upgraded EBR plugin to 1.3.0.
  • Upgraded actions/cache to 2.1.6.
  • Upgraded actions/upload-artifact to 2.2.4.
  • Upgraded antlr ST4 to 2.1.5.
  • Upgraded checkstyle plugin to 3.1.2.
  • Upgraded checkstyle to 8.42.
  • Upgraded codehaus maven plugin to 2.8.1.
  • Upgraded jacoco to v2.2.3.
  • Upgraded jmh-core to 1.33.
  • Upgraded maven-resources-plugin to 3.2.0.
  • Upgraded to JUnit 4.13.1.
  • Upgraded to setup-java v2.
  • Skip p2 repository module during EA builds and Java 15+ builds.
  • Enabled Dependabot v2.
  • Added GitHub action to generate code coverage report.
  • Added JDK Early Access GitHub Actions.

Breaking Changes


Warning: These changes are already mentioned above. The list below might not be exhaustive, make sure to test your application and usages to verify.

  • Added logic to throw UnsupportedOperationException on calling withMap method in FixedSizeMap.
  • Made org.eclipse.collections.impl.list.Interval#goForward private.
  • Replaced HashingStrategies.longHashCode with Java 8 Long.hashCode.
  • Removed Verify.assertThrows() which takes a Runnable in favor of Assert.assertThrows().
  • Removed assertNotEquals() from Verify as Assert already has the same API.

Note


We have taken all the measures to ensure all features are captured in the release notes. However, release notes compilation is manual, so it is possible that a commit might be missed. For a comprehensive list of commits please go through the commit log.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>11.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>11.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>11.0.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>11.0.0</version>
</dependency>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:11.0.0'
implementation 'org.eclipse.collections:eclipse-collections:11.0.0'
testImplementation 'org.eclipse.collections:eclipse-collections-testutils:11.0.0'
implementation 'org.eclipse.collections:eclipse-collections-forkjoin:11.0.0'

Ivy

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

OSGi Bundle

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

10.4.0

3 years ago

This is the 10.4.0 minor release. This release includes mandatory fixes to make the library compatible with JDK-15.

Changes


  • Added CharAdapter.isEmpty(), CodePointAdapter.isEmpty(), CodePointList.isEmpty(), as JDK-15 introduced CharSequence.isEmpty().
  • Fixed Javadoc errors for MapIterable, Multimaps, ImmutablePrimitiveBagFactory, MutablePrimitiveBagFactory, ImmutablePrimitiveListFactory, MutablePrimitiveListFactory, ImmutablePrimitiveSetFactory, MutablePrimitiveSetFactory, ImmutablePrimitiveStackFactory, MutablePrimitiveStackFactory.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>10.4.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>10.4.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>10.4.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>10.4.0</version>
</dependency>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:10.4.0'
implementation 'org.eclipse.collections:eclipse-collections:10.4.0'
testImplementation 'org.eclipse.collections:eclipse-collections-testutils:10.4.0'
implementation 'org.eclipse.collections:eclipse-collections-forkjoin:10.4.0'

Ivy

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

OSGi Bundle

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

10.3.0

3 years ago

This is the 10.3.0 minor release. Even though this is a minor release, by no means the release was minor. This release is feature packed with numerous contributions from many contributors. This release is to provide new features requested by the community, various optimizations, reduce tech debt, and includes OSGi integration improvements.

The Eclipse Collections team gives a huge thank you to everyone who participated in this release.

New Functionality


  • Implemented RichIterable.containsBy().
  • Implemented RichIterable.flatCollectPrimitive().
  • Implemented ListIterable.forEachInBoth().
  • Implemented MapIterable.getOrDefault() to allow easy inter-op.
  • Implemented MapIterable.aggregateBy() which can aggregate on key and value.
  • Implemented MutableMap.withMap().
  • Implemented primitiveIterable.toArray() which takes an array as a parameter to store the elements of the iterable.
  • Implemented primitiveLists.withInitialCapacity() and primitiveSets.withInitialCapacity().
  • Implemented primitiveList.wrapCopy() to create a list by first copying the array passed in.
  • Implemented MutablePrimitiveList.shuffleThis().
  • Implemented MutablePrimitiveList.swap().
  • Implemented variant of MutablePrimitiveList.sortThis() which takes Comparator as input.
  • Implemented variants of MutablePrimitiveList.sortThisBy() which takes primitiveToObjectFunction and Comparator as inputs.
  • Made primitive*HashMap.keySet() serializable.
  • Implemented singly-linked ImmutableStack.
  • Implemented LongInterval.
  • Implemented IntInterval.subList()
  • Implemented Interval.fromToExclusive().
  • Implemented Triples.
  • Implemented Tuples.identicalTwin(), Tuples.identicalTriplet().
  • Implemented missing methods in Multimap factory.
  • Implemented Comparators.byFunctionNullsFirst(), Comparators.byFunctionNullsLast().
  • Implemented Bags.ofOccurrences() and Bags.withOccurrences().
  • Added Hindi Translation of Eclipse Collections website.

Tech Debt Reduction


  • Replaced usage of org.eclipse.collections.impl.factory with org.eclipse.collections.api.factory wherever possible.
  • Added default method for RichIterable.aggregateBy() that takes a target Map.
  • Pulled up RichIterable.groupByUniqueKey() as default methods.
  • Pulled up implementations of aggregateBy() as default methods.
  • Pulled up implementations of with(), without(), withAll(), withoutAll() as default methods.
  • Pulled up OrderedIterable.toStack() as a default method.
  • Pulled up ListIterable.binarySearch() as default methods.
  • Simplified implementation of RichIterable.containsBy().
  • Added missing tests for MapIterable.getIfAbsent*().
  • Added missing tests for MultimapsTest.
  • Added missing tests for primitiveIterable.reduceIfEmpty().
  • Optimized ImmutableListFactoryImpl.toImmutable() by not creating a redundant array copy
  • Optimized Bag.aggregateBy() to use forEachWithOccurrences.
  • Optimized primitiveList.toImmutable() by not creating a redundant array copy.
  • Optimized collect methods for primitiveImmutableSingletonBag, primitiveImmutableSingletonSet, and primitiveImmutableSingletonList.
  • Optimized BooleanArrayList.removeIf().
  • Optimized IntInterval.size() and Interval.size() by caching size.
  • Optimized IntInterval.sum(), IntInterval.mean(), and IntInterval.average() by using direct formulas.
  • Removed duplicate code for implementations of aggregateBy().
  • Removed duplicate methods in AbstractMutableBagIterable and AbstractImmutableBagIterable that have been moved up as default methods.
  • Removed duplicate overrides for forEach().
  • Added Javadocs for primitivePrimitiveMaps, primitiveObjectMaps, objectPrimitiveMaps, primitiveValuesMaps and their hierarchy.
  • Improved documentation of Function2, Function3, and MutableCollection.injectIntoWith.
  • Enabled code generation of BooleanArrayStack from the common primitive stack template.
  • Added missing @Override annotations for tap().
  • Added and fixed Checkstyle checks for comma-separated lists that are partially wrapped.
  • Fixed Javadoc errors and warnings.
  • Fixed whitespace and line-wrapping violations.
  • Fixed inspections violations.
  • Fixed gradle dependency settings in website.

OSGi Integration Improvements


  • Added OSGi metadata.
  • Fixed OSGi metadata to have sun.misc be an optional import package.
  • Fixed project versions published to p2 repository.

Build Changes


  • Migrated builds to GitHub Actions.
  • Removed Travis builds.
  • Added initial integration with Pitest for mutation testing.
  • Upgraded Maven to 3.6.3.
  • Upgraded dependencies used by tests.
  • Upgraded CheckStyle to 8.34
  • Upgraded Tycho plugin to 1.7.0
  • Upgraded EBR plugin to 1.2.0.
  • Upgraded versions of various Maven plugins.

Note


We have taken all the measures to ensure all features are captured in the release notes. However, release notes compilation is manual, so it is possible that a commit might be missed. For a comprehensive list of commits please go through the commit log.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>10.3.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>10.3.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>10.3.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>10.3.0</version>
</dependency>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:10.3.0'
implementation 'org.eclipse.collections:eclipse-collections:10.3.0'
testImplementation 'org.eclipse.collections:eclipse-collections-testutils:10.3.0'
implementation 'org.eclipse.collections:eclipse-collections-forkjoin:10.3.0'

Ivy

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

OSGi Bundle

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

10.2.0

4 years ago

This is the 10.2.0 minor release. Central theme of this release is to fix bugs for edge cases, reduce tech debt, optimize iteration patterns and provide user requested functionality to ensure better usability for higher order use cases of Eclipse Collections.

New Functionality

  • Exposed the allocateTable method as protected in Primitive Maps and Primitive Sets.

Bug Fixes

  • Fixed size edge case issues in Interval and IntInterval.

Tech Debt Reduction

  • Optimized removeIf on UnifiedMap.
  • Implemented removeIf as a default method on MutableMapIterable.
  • Replaced usages of Comparators.nullSafeEquals() with Objects.equals().

Build Changes

  • Moved some maven configuration from .travis.yml to jvm.config.
  • Changed Maven plugin repository to use https.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>10.2.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>10.2.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>10.2.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>10.2.0</version>
</dependency>

Gradle

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

Ivy

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

OSGi Bundle

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

10.1.0

4 years ago

This is the 10.1.0 minor release. Central theme of this release is to fix issues identified for SimRel repository. There are also few new features, enhancements and bug fixes.

New Functionality

  • Implemented RichIterable.groupByAndCollect().
  • Implemented NoopProcedure.

Bug Fixes

  • Fixed IntInterval.fromToBy() for same values of from and to with a negative step.
  • Fixed IntInterval.injectInto() for same values of from and to with a negative step.

Tech Debt Reduction

  • Added examples for creating and modifying Immutable Collections in documentation.
  • Changed internal variable name in Multimaps class for ImmutableSortedBagFactory
  • Fixed generated Eclipse features for p2 repository to ensure correct EPLv1 license is downloaded.
  • Fixed generated Eclipse features for p2 repository to ensure correct signatures on artifacts.
  • Fixed repository path for Eclipse features.

Build Changes

  • Fixed configuration to gpg sign plugin to work on new CI infrastructure.
  • Improved .gitignore for maven to reduce noise.
  • Modified build to use maven's --no-transfer-progress option to reduce noise.
  • Upgraded maven plugins.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>10.1.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>10.1.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>10.1.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>10.1.0</version>
</dependency>

Gradle

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

Ivy

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

OSGi Bundle

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

10.0.0

4 years ago

This is the 10.0.0 major release. Central theme of this release is addition of new APIs, features as requested by the community and decrease Tech Debt. This is our yearly major release.

New Functionality

  • Changed collection factories to be services that get loaded by the ServiceLoader in the API package.
  • Changed RichIterable.groupByUniqueKey() so that it's target extends MutableMapIterable instead of MutableMap.
  • Implemented UnmodifiableMutableOrderedMap.
  • Added <primitive1><primitive2>To<primitive1>Function.
  • Added specialized MultiReader interfaces for List, Set and Bag to improve the interface hierarchy.
  • Implemented RichIterable.getAny().
  • Implemented RichIterable.countByEach().
  • Implemented RichIterable.toMap() with target.
  • Implemented RichIterable.toBiMap().
  • Implemented MutableMapIterable.removeIf().
  • Implemented MutableMapIterable.removeAllKeys().
  • Implemented Bag.collectWithOccurrences(ObjectIntToObjectFunction).
  • Implemented Multimap.collectKeyMultiValues().
  • Implemented MutableMultimap.getIfAbsentPutAll().
  • Implemented UnifiedSetWithHashingStrategy.addOrReplace(Object).
  • Implemented LazyIterate.cartesianProduct().
  • Added override for replaceAll() and sort() on List implementations.
  • Implemented fromStream(Stream) on Mutable Collection Factories and Immutable Collection Factories.
  • Implemented ImmutableSortedBagMultimapFactory for Multimaps
  • Implemented HashingStrategySets.ofInitialCapacity() and HashingStrategySets.withInitialCapacity().
  • Implemented a Map factory method that takes a Map as a parameter
  • Implemented PrimitiveIterable.reduce() and PrimitiveIterable.reduceIfEmpty().
  • Implemented PrimitiveList.primitiveStream().
  • Implemented PrimitiveMap.updateValues().
  • Implemented factory methods to convert Iterable<BoxedPrimitive> to PrimitiveList, PrimitiveSet, PrimitiveBag, PrimitiveStack.
  • Implemented ofInitialCapacity() and withInitialCapacity() to Primitive Map Factories.
  • Added ability to create ObjectPrimitiveMap, PrimitiveObjectMap, PrimitivePrimitiveMap from Iterable.

Optimizations

  • Revamped and standardized resize/rehash for all primitive hash structures.

Bug Fixes

  • Fixed ImmutableDoubletonMap.flipUniqueValues() to throw exception when it has duplicates.
  • Added missing toSentinel() calls in UnifiedSet.put(), UnifiedSetWithHashingStrategy.put().
  • Added validation in FastList for initial capacity < 0.

Tech Debt Reduction

  • Fixed SerializeTestHelper to use try-with-resources.
  • Reduced duplicate readlock and writelock code in MultiReaderFastList, MultiReaderHashBag and MultiReaderUnifiedSet.
  • Replaced Apache commons-codec by Java 8 Base64 in Verify.
  • Added missing bounded wildcards on generic types.
  • Added wildcard types in MutableMapIterable.putPair(), MutableMapIterable.add(), MutableMultimap.putAllPairs() and MutableMultimap.add().
  • Fixed generics on MultiReaderFastList.newList().
  • Added overrides for methods in MutableOrderedMap.
  • Fixed assignment order in constructor of IntIntervalSpliterator.
  • Removed unnecessary casts, redundant type arguments.
  • Fixed invalid cast in UnifiedSet.trimToSize().
  • Changed Boxed result array to Primitive array to avoid unnecessary boxing in Primitive reduce.
  • Fixed several inspection violations, checkstyle violations and static analysis violations to increase code hygiene.
  • Fixed incorrect org.eclipse.collections.api.list api doc.
  • Fixed Javadoc lint errors, legacy Javadoc to update references to Eclipse Collections.
  • Moved implementations for forEach(), toSortedListBy(), toSortedSetBy(), toSortedBagsBy(), toSortedMapBy(), toArray(), countBy(), countByWith(), selectUnique(), flatCollectWith(), reverseForEach(), reverseForEachWithIndex() as default methods to interfaces.
  • Moved implementations for tap(), select(), selectWith(), reject(), rejectWith(), collect(), collectWith(), collectIf(), flatCollect(), toImmutable(), toReversed(), reverseThis(), shuffleThis() to MutableList as default implementations.
  • Removed default implementations for RichIterable.toSortedMapBy(), MutableListFactory.ofInitialCapacity(), selectUnique() from all Bag interfaces viz. Bag, ImmutableBag, ImmutableBagIterable, ImmutablePrimitiveBag, ImmutableSortedBag, MutableBag, MutableBagIterable, MutablePrimitiveBag, MutableSortedBag, PrimitiveBag, SortedBag, UnsortedBag. These were added to allow inclusion in minor release.
  • Changed collection constructor factories from enums to singleton classes.
  • Upgraded CollectPrimitiveProcedure to be generated at build time by using stg file.
  • Added SerializationTest for CollectPrimitiveProcedure.
  • Added test coverage for IntInterval, MultiReaderHashBag, CharAdapter, CodePointAdapter, CodePointList, Lists, Primitive Factories, RichIterable.minOptional(), RichIterable.maxOptional(), RichIterable.zip(), MapIterable.detectOptional, MapIterable.detectWithOptional and MutableMapIterable.removeIf().
  • Updated IntListJMHTest to include benchmarks using IntStream.
  • Reduced benchmark errors by consuming every object created in a benchmark to avoid DCE.

Removed Functionality

  • Removed unused ant build module.
  • Removed deprecated classes marked for removal: SummaryStatistics, SerializableIntSummaryStatistics, SerializableLongSummaryStatistics, and SerializableDoubleSummaryStatistics.

Build Changes

  • Added Javadoc build for pull requests to ensure correct CI.
  • Upgraded maven plugins for build time stability.
  • Updated Tycho Version to 1.3.0.
  • Configured Travis to run maven using the maven wrapper.
  • Fixed 'maven install' for newer versions of Java by using maven profiles to link modules with the version of Java that can build them.
  • Fixed maven pluginRepositories settings to include maven central.
  • Fixed Travis builds to cache the maven local cache without including Eclipse Collections jars.
  • Removed EclipseCollectionsCodeGenerator Task.
  • Removed unused dependencies from maven build.
  • Removed obsolete maven prerequisites.
  • Customized IntelliJ maven argline settings.
  • Turned on Eclipse Collections Code Generator plugin on configuration for Eclipse IDE.

Breaking Changes

Warning: These changes are already mentioned above. The list below might not be exhaustive, make sure to test your application and usages to verify.

  • Changed groupByUniqueKey() so that it's target extends MutableMapIterable instead of MutableMap. This breaks binary compatibility.
  • Added missing bounded wildcards on generic types.
  • Removed deprecated classes marked for removal: SummaryStatistics, SerializableIntSummaryStatistics, SerializableLongSummaryStatistics, and SerializableDoubleSummaryStatistics.
  • Removed default implementations for RichIterable.toSortedMapBy(), MutableListFactory.ofInitialCapacity(), selectUnique() from all Bag interfaces viz. Bag, ImmutableBag, ImmutableBagIterable, ImmutablePrimitiveBag, ImmutableSortedBag, MutableBag, MutableBagIterable, MutablePrimitiveBag, MutableSortedBag, PrimitiveBag, SortedBag, UnsortedBag. These were added to allow inclusion in minor release.
  • Upgraded CollectPrimitiveProcedure to be generated at build time by using stg file. This might break serialization.
  • Added validation in FastList for initial capacity < 0.
  • Fixed ImmutableDoubletonMap.flipUniqueValues() to throw exception when it has duplicates.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>10.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>10.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>10.0.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>10.0.0</version>
</dependency>

Gradle

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

Ivy

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

OSGi Bundle

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

9.2.0

5 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

9.1.0

6 years ago

9.1.0 (January 2018)

This is the 9.1.0 minor release. Main theme of this release to converge the API of Primitive and Object Collections. This release is also used to prepare for Eclipse Photon contribution and enhance OSGi support based on user feedback.

New Functionality

  • Implemented collectWithIndex() on OrderedIterable.
  • Implemented collectWithIndex() on PrimitiveOrderedIterable.
  • Implemented collectWithIndex() on ListIterate.
  • Implemented collectWithIndex() on RandomAccessListIterate.
  • Implemented collectWithOccurrences() on Bags.
  • Implemented zip() on primitive lists.
  • Implemented zip() on IntIterable.
  • Implemented zipInt() on IntIterable.
  • Implemented removeIf(PrimitivePredicate) for MutablePrimitiveCollections.
  • Implemented MutablePrimitivePrimitiveMap.putPair(PrimitivePrimitivePair).
  • Implemented MutablePrimitiveObjectMap.putPair(PrimitiveObjectPair<V>).
  • Implemented MutableObjectPrimitiveMap.putPair(ObjectPrimitivePair<K>).
  • Implemented MutableMapIterable.putPair(Pair<K, V> keyValue).
  • Implemented trimToSize() on UnifiedMapWithHashingStrategy.
  • Implemented countBy() on Collectors2.
  • Implemented groupByEach() on Collectors2.
  • Implemented groupByUniqueKey() on Collectors2.
  • Implemented MultiReaderList factory.
  • Added withInitialCapacity() and ofInitialCapacity() on MutableList factory.
  • Added withInitialCapacity() and ofInitialCapacity() on MultiReaderList factory.
  • Implemented a factory class for Strings.

Bug Fixes

  • Fixed concurrency issues in EntrySet.removeIf() for ConcurrentHashMap and ConcurrentHashMapUnsafe.

Tech Debt Reduction

  • Removed unnecessary probe() call in PrimitiveObjectHashMap.
  • Added Javadoc to Pair, Twin, Tuples, PrimitiveTuples, ObjectPrimitivePair, PrimitivePrimitivePair and PrimitiveObjectPair.
  • Upgraded Maven Enforcer and Maven Javadoc plugins.
  • Enabled unused import checkstyle configuration and fixed offenders.
  • Enabled Java 9 unit test build on Travis.

OSGi

  • Added a feature for Eclipse Collections

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>9.1.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>9.1.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>9.1.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>9.1.0</version>
</dependency>

Gradle

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

Ivy

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

OSGi Bundle

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

9.0.0

6 years ago

The primary focus of 9.0.0 release is to prepare for Java 9, introduce new APIs, enhance symmetry between object and primitive APIs, improve OSGi integration and reduce tech debt.

New Functionality

  • Added "Automatic-Module-Name" to manifests of JAR files for Java 9.
  • Implemented countBy() and countBy() with target as default methods on RichIterable.
  • Implemented adapt() on factory classes.
  • Implemented ofAll() and withAll() for Int, Long, Double collection factories with primitive streams.
  • Implemented averageIfEmpty() on primitive iterables.
  • Implemented medianIfEmpty() on primitive iterables.
  • Implemented flatCollect() on lazy primitive iterables.
  • Implemented cartesianProduct() on primitive sets factory.
  • Implemented tap() on primitive iterables.
  • Implemented flipUniqueValues() on primitive maps.
  • Implemented spliterator(), stream(), parallelStream() and castToCollection() on ImmutableCollection.
  • Implemented stream(), parallelStream() and spliterator() on all object valued maps.
  • Implemented ReversibleIterable.reverseForEachWithIndex().
  • Implemented distinctBy() on ListIterable.
  • Implemented trimToSize() on UnifiedSet.
  • Implemented trimToSize() on UnifiedMap.
  • Implemented HashingStrategies.nullSafeFromFunction(Function).

Breaking Change

  • Reduced scope of EMPTY_INSTANCE in ImmutableBiMapFactoryImpl.
  • Reduced scope of EMPTY Multimap instances in Multimaps Factory.
  • Removed access to collection factory constructors.
  • Removed usage of JCIP annotations.
  • Removed Apache Felix plugin. Please use p2 repository for OSGi bundles.

Tech Debt Reduction

  • Added covariant override for subList() in ListIterable hierarchy.
  • Added an efficient default implementation of forEach.
  • Added Javadoc for distinctBy().
  • Activated Checkstyle RequireThis module.
  • Enabled signing of p2 repository artifacts.
  • Enabled export of all packages to OSGi.
  • Removed unnecessary Tycho signing in p2 repository build.
  • Fixed Javadoc issue in Maps.
  • Fixed warnings generated during Javadoc build.

Miscellaneous

  • Added logo in reference guide.
  • Added Eclipse Collections logo in README.
  • Added Eclipse Collections logo.

Acquiring Eclipse Collections

Maven

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-api</artifactId>
  <version>9.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections</artifactId>
  <version>9.0.0</version>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-testutils</artifactId>
  <version>9.0.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.eclipse.collections</groupId>
  <artifactId>eclipse-collections-forkjoin</artifactId>
  <version>9.0.0</version>
</dependency>

Gradle

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

Ivy

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

OSGi Bundle

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