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

Overview

English | 中文 | Deutsch | Español | Ελληνικά | Français | 日本語 | Norsk (bokmål) | Português-Brasil | Русский | हिंदी

Eclipse Collections is a comprehensive collections library for Java. The library enables productivity and performance by delivering an expressive and efficient set of APIs and types. The iteration protocol was inspired by the Smalltalk collection framework, and the collections are compatible with the Java Collection Framework types.

Eclipse Collections is compatible with Java 8+. Eclipse Collections is a part of the OpenJDK Quality Outreach program, and it is validated for different versions of the OpenJDK.

Why Eclipse Collections?

Learn Eclipse Collections

Eclipse Collections and JDK Compatibility Matrix

EC 7.x.x 8.x.x 9.x.x 10.0.0 10.1.0 10.2.0 10.3.0 10.4.0
JDK 5
JDK 6
JDK 7
JDK 8
JDK 9
JDK 10
JDK 11
JDK 12
JDK 13
JDK 14
JDK 15

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>

Gradle

implementation 'org.eclipse.collections:eclipse-collections-api:10.4.0'
implementation 'org.eclipse.collections:eclipse-collections:10.4.0'

OSGi Bundle

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

How to Contribute

We welcome contributions! We accept contributions via pull requests here in GitHub. Please see How To Contribute to get started.

Additional information

Comments
  • Please  properly license and sign the artifacts contributed to the release train.

    Please properly license and sign the artifacts contributed to the release train.

    Looking at this report, specifically for Eclipse Collections contribution to SimRel:

    https://download.eclipse.org/oomph/archive/simrel/collections.aggrcon/index.html

    It's clear that you folks need to add a proper license to the feature and that you need to sign the feature's jars.

    I've tried to get your attention via this channel:

    https://www.eclipse.org/lists/cross-project-issues-dev/msg17024.html

    But the latest contributions are still in bad shape.

    At some point I'll ask that the planning council remove such non-conforming contributions...

    If there's something I can do to help, feel free to ask.

    opened by merks 41
  • reduce for primitive iterables

    reduce for primitive iterables

    Hi,

    This is a PR for #312, this is not finished, but I'm making this PR public in order to get feedbacks as soon as possible.

    TODO:

    • [x] add reduce and reduceIfEmpty to primitive iterables with simple implementation as a default method
    • [x] check if there are other collections (than synchronized primitive iterable and synchronized ~~and unmodifiable~~ primitive collection) that needs a specialized implementation of reduce for correctness
    • [x] make DoubleDoubleToDoubleFunction extend DoubleBinaryOperator (as well as with int and long)
    • [x] ~~introduce primitive optionals (for now I use Optional with primitive wrappers)~~
    • [x] elegantly handle overflow problem (sum on int should give long…)
    • [x] ~~add reduceInPlace~~

    I think that after that, this can be merged and then we could open the following new issues:

    • add optimized implementation of reduce and reduceInPlace in the right places
    • other ideas?

    Open questions:

    • I feel like using a default method (as recommended, see https://github.com/eclipse/eclipse-collections/issues/312#issuecomment-438015186) is dangerous because you never know when it is needed to override or not the method. For example I almost missed abstract synchronized and unmodifiable primitive collections. I'm still not sure if I missed other implementations… If I had added the implementation in the abstract class, I would have a clearer view of the class hierarchies impacted by the addition of the method.

    cc @donraab

    opened by victornoel 34
  • Incorrect feature version in p2 repository

    Incorrect feature version in p2 repository

    When loading the p2 repository https://download.eclipse.org/collections/10.2.0/repository the feature version is shown as 10.1.0.v20200211-1558. I suppose it was missed to update the version in the p2 project pom.xml files. Is that correct or are there any additional places where the incorrect version could be?

    I suppose this can't be fixed for 10.2 as it is already released. But for the next 10.3 it should be updated accordingly.

    opened by fipro78 33
  • Primitive list stream

    Primitive list stream

    This is not ready to merge. As this is my first PR in this project i would appreciate if anyone could look at this and see if this is the right direction. I am more concerned with the concepts as with code style, etc

    opened by david-gang 25
  • add jcstress-based tests for concurrent collections

    add jcstress-based tests for concurrent collections

    Tests for bug reported in #424 and partially fixed in #426

    Uses http://openjdk.java.net/projects/code-tools/jcstress/

    To run them in target folder java -jar jcstress.jar

    opened by isopov 25
  • (Partially) Closes #351: Javadocs for map APIs

    (Partially) Closes #351: Javadocs for map APIs

    I have completed Javadocs on the API's map package. I am opening a PR to being the review process now before I (or someone else!) moves on to the other packages (list, set, bag, etc.). In my view, map was the highest priority with methods like getIfAbsentPutWith that benefited most from Javadocs. Additionally, I'm envisioning many Javadocs in those packages will be copy-paste from what I have here, so I want to confirm the verbiage is right before doing so.

    Some non-Javadoc changes included in this PR (which can be taken out if needed):

    • Update checkstyle DTD (now content assist works in Eclipse when editing the configs)
    • Remove \r checkstyle check. I don't see what benefit it provides (from what I can tell, my commits still have just \n even from Windows) while just making it a lot harder to contribute from Windows and get a clean build
    • Remove a redundant tap() declaration in immutableObjectPrimitiveMap.stg

    Additionally, this includes a helper JavadocUtil that will copy Javadocs back from a generated class to a template. It's not perfect but it saved me a ton of time, so that I could edit the Javadocs on an example concrete class and benefit from Eclipse's Javadoc assists that would otherwise be unavailable when directly editing the template.

    opened by jdimeo 22
  • Implement Iterate.toMultimap()

    Implement Iterate.toMultimap()

    Adding toMultimap() on RichIterable is a major version change. It can be added in the static utility for a minor version. There is a new MultimapKeyValuePutProcedure created, if this will be a major version change, I can inline the call for minor version change, and replace with the Procedure in major version. I have only added the targetMultimap variant of toMultimap(), this is because I want users to control the output instead of deciding which type of Multimap is returned for a particular Iterable.

    minor-version 
    opened by nikhilnanivadekar 22
  • FastList broken after upgrade to java 16 from 15 due to module error

    FastList broken after upgrade to java 16 from 15 due to module error

    Hi I just upgraded to java 16 in eclipse and now fastutil is throwing an error

    Exception in thread "main" java.lang.ExceptionInInitializerError at org.eclipse.collections.impl.list.mutable.FastList.addAllArrayList(FastList.java:311) at org.eclipse.collections.impl.list.mutable.FastList.addAll(FastList.java:283) at main.Start.main(Start.java:20) Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field transient java.lang.Object[] java.util.ArrayList.elementData accessible: module java.base does not "opens java.util" to unnamed module @66ff6b1 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177) at java.base/java.lang.reflect.Field.setAccessible(Field.java:171) at org.eclipse.collections.impl.utility.ArrayListIterate.(ArrayListIterate.java:108) ... 4 more

    worked fine in java 15, all I am doing is creating a new fastlist and populating it using a List to addAll()

    I can get round the problem using the VM flag --add-opens java.base/java.util=ALL-UNNAMED but this is only a workaround not a bugfix.

    opened by MPdaedalus 20
  • Add an overload for toMap with a target Map as a parameter to RichIterable

    Add an overload for toMap with a target Map as a parameter to RichIterable

    Currently there is a method toMap which returns a MutableMap. The method toMap is similar to the collect method. The method collect currently has an overloaded form which takes a target Collection. I recently encountered a use case where it would have been helpful to have a form of toMap which takes a target Map as a parameter. The specific use case was collecting from a List into a LinkedHashMap. This particular use case could have also been solved if there was a method called toOrderedMap, but I think the toMap overload would be more generally useful as any Map type could be returned.

    enhancement help wanted major-version good first issue 
    opened by donraab 19
  • Adds asSet() to Bag for #726

    Adds asSet() to Bag for #726

    :warning: Edit: all of this is outdated, see #869 for the latest design :warning:

    Finally had the time to finish my PR for #726.

    I made the following design decisions:

    • The different Bag interfaces exposes asSet() which is a view on the unique elements of the bag
    • They are either a SetIterable or a MutableSet
    • I didn't tackle returning sorted o immutable variants because
    • implementing it was way too complex
    • this is not the primary use case for accessing a Bag as a Set IMHO
    • The synchronized, unmodifiable and multi reader variants are implemented though
    • Only for ImmutableArrayBag and ImmutableSortedBagImpl, I had to implement it by subclassing AbstractImmutableSet inline: since they are both based on arrays, I only implemented the minimum because I don't think it would have much impact on performance to do more.

    One open question is: should the inline subclassing be extracted in a separate class that wraps an array maybe?

    opened by victornoel 17
  • Implement LazyIterate.cartesianProduct

    Implement LazyIterate.cartesianProduct

    This generalize the already available Sets.cartesianProduct and SetIterables.cartesianProduct to any Iterable.

    This is something I did need many times and I was bothered to have to convert my two LazyIterables into concrete Sets just to get the product of their elements.

    opened by victornoel 17
  • Tricky NullPointerException in IntObjectMap.forEachKeyValue

    Tricky NullPointerException in IntObjectMap.forEachKeyValue

    If you remove key 0 (int; aka EMPTY_KEY) in forEachKeyValue - you will enjoy NullPointerException

    @Test public void testBugRemoveNPE (){
      try {
        var m = IntObjectMaps.mutable.of(0, 'a');
        m.forEachKeyValue((k,v)->m.removeKey(k));
        fail();
      } catch (NullPointerException e){
        //assertEquals("Cannot read field \"containsOneKey\" because \"this.sentinelValues\" is null", e.getMessage());
      }
    }
    

    Problem is here: org.eclipse.collections.impl.map.mutable.primitive.IntObjectHashMap#forEachKeyValue

    if (this.sentinelValues.containsOneKey)

    after removing key 0 aka EMPTY_KEY - sentinelValues can be null

    The problem is easy to fix:

    if (this.sentinelValues != null && this.sentinelValues.containsZeroKey)
    {
      procedure.value(EMPTY_KEY, this.sentinelValues.zeroValue);
    }
    if (this.sentinelValues != null && this.sentinelValues.containsOneKey)
    {
      procedure.value(REMOVED_KEY, this.sentinelValues.oneValue);
    }
    
    opened by magicprinc 5
  • Bump actions/cache from 3.0.2 to 3.2.1

    Bump actions/cache from 3.0.2 to 3.2.1

    Bumps actions/cache from 3.0.2 to 3.2.1.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3...v3.2.0

    v3.2.0-beta.1

    What's Changed

    v3.1.0-beta.3

    What's Changed

    • Bug fixes for bsdtar fallback, if gnutar not available, and gzip fallback, if cache saved using old cache action, on windows.

    Full Changelog: https://github.com/actions/cache/compare/v3.1.0-beta.2...v3.1.0-beta.3

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.0.2

    • Added support for dynamic cache size cap on GHES.

    3.0.3

    • Fixed avoiding empty cache save when no files are available for caching. (issue)

    3.0.4

    • Fixed tar creation error while trying to create tar with path as ~/ home folder on ubuntu-latest. (issue)

    3.0.5

    • Removed error handling by consuming actions/cache 3.0 toolkit, Now cache server error handling will be done by toolkit. (PR)

    3.0.6

    • Fixed #809 - zstd -d: no such file or directory error
    • Fixed #833 - cache doesn't work with github workspace directory

    3.0.7

    • Fixed #810 - download stuck issue. A new timeout is introduced in the download process to abort the download if it gets stuck and doesn't finish within an hour.

    3.0.8

    • Fix zstd not working for windows on gnu tar in issues #888 and #891.
    • Allowing users to provide a custom timeout as input for aborting download of a cache segment using an environment variable SEGMENT_DOWNLOAD_TIMEOUT_MINS. Default is 60 minutes.

    3.0.9

    • Enhanced the warning message for cache unavailablity in case of GHES.

    3.0.10

    • Fix a bug with sorting inputs.
    • Update definition for restore-keys in README.md

    3.0.11

    • Update toolkit version to 3.0.5 to include @actions/core@^1.10.0
    • Update @actions/cache to use updated saveState and setOutput functions from @actions/core@^1.10.0

    3.1.0-beta.1

    • Update @actions/cache on windows to use gnu tar and zstd by default and fallback to bsdtar and zstd if gnu tar is not available. (issue)

    3.1.0-beta.2

    • Added support for fallback to gzip to restore old caches on windows.

    3.1.0-beta.3

    • Bug fixes for bsdtar fallback if gnutar not available and gzip fallback if cache saved using old cache action on windows.

    3.2.0-beta.1

    • Added two new actions - restore and save for granular control on cache.

    3.2.0

    • Released the two new actions - restore and save for granular control on cache

    3.2.1

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Use of mutation testing in eclipse-collections - Help needed

    Use of mutation testing in eclipse-collections - Help needed

    Hello there!

    My name is Ana. I noted that you use the mutation testing tool pit in the project. I am a postdoctoral researcher at the University of Seville (Spain), and my colleagues and I are studying how mutation testing tools are used in practice. With this aim in mind, we have analysed over 3,500 public GitHub repositories using mutation testing tools, including yours! This work has recently been published in a journal paper available at https://link.springer.com/content/pdf/10.1007/s10664-022-10177-8.pdf.

    To complete this study, we are asking for your help to understand better how mutation testing is used in practice, please! We would be extremely grateful if you could contribute to this study by answering a brief survey of 21 simple questions (no more than 6 minutes). This is the link to the questionnaire https://forms.gle/FvXNrimWAsJYC1zB9.

    Drop me an e-mail if you have any questions or comments ([email protected]). Thank you very much in advance!!

    opened by belene 0
  • Make OSGi-compatible JAR available via Maven

    Make OSGi-compatible JAR available via Maven

    We're developing an application on an OSGi runtime. It is part of a bigger product which uses a Maven build. In order to improve consistency and maintainability, we set up a Maven build for the OSGi app, too, and it proved a good idea for years now. Recently, we added Eclipse Collections to our dependencies and found there is an API / implementation pair of JARs which does not work in OSGi and a JAR including both which is available as an Eclipse update site only. None of them fits our needs. Would it be possible to provide the OSGi-compatible JAR including both API and implementation via Maven?

    opened by christianmichaelis 1
Releases(11.1.0)
  • 11.1.0(Jul 6, 2022)

    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

    Source code(tar.gz)
    Source code(zip)
  • 11.0.0(Nov 29, 2021)

    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

    Source code(tar.gz)
    Source code(zip)
  • 10.4.0(Aug 23, 2020)

    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

    Source code(tar.gz)
    Source code(zip)
  • 10.3.0(Aug 9, 2020)

    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

    Source code(tar.gz)
    Source code(zip)
  • 10.2.0(Feb 16, 2020)

    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

    Source code(tar.gz)
    Source code(zip)
  • 10.1.0(Dec 7, 2019)

    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

    Source code(tar.gz)
    Source code(zip)
  • 10.0.0(Jul 15, 2019)

    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

    Source code(tar.gz)
    Source code(zip)
  • 9.2.0(May 21, 2018)

    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

    Source code(tar.gz)
    Source code(zip)
  • 9.1.0(Jan 2, 2018)

    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).
    • Implemented MutableObjectPrimitiveMap.putPair(ObjectPrimitivePair).
    • 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

    Source code(tar.gz)
    Source code(zip)
  • 9.0.0(Sep 23, 2017)

    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

    Source code(tar.gz)
    Source code(zip)
  • 8.2.0(Jun 24, 2017)

    The primary theme of 8.2.0 release is to continue leveraging features of Java 8, prepare for Java 9, improve OSGi integration and reduce tech debt.

    New Functionality

    • Implemented OrderedIterable.getFirstOptional() and OrderedIterable.getLastOptional().
    • Implemented RichIterable.minOptional() and RichIterable.minByOptional().
    • Implemented RichIterable.maxOptional() and RichIterable.maxByOptional().
    • Provided a p2 repository with new OSGi bundle.

    Optimizations

    • Optimized ImmutableTreeSet constructor to not create a new TreeSortedSet.
    • Optimized constructors of ImmutableTreeSet which take an array as input.
    • Optimized minOptional(), minByOptional(), maxOptional() and maxByOptional() on LazyIterable.
    • Optimized size() on CompositeIterable.

    Java 9 Compatibility Fixes

    • Added workaround for reflection in ArrayListIterate.
    • Deprecated SerializableDoubleSummaryStatistics, SerializableIntSummaryStatistics,SerializableLongSummaryStatistics, SummaryStatistics.
    • Fixed compilation errors for JDK 9.
    • Changed 'throws' tests to support Java 8 and Java 9.
    • Added workaround for reflection in Verify#assertShallowClone().
    • Deprecated Verify#assertShallowClone().

    Tech Debt Reduction

    • Deprecated EMPTY_INSTANCE in ImmutableBiMapFactoryImpl.
    • Deprecated EMPTY Multimap instances in org.eclipse.collections.impl.factory.Multimaps.
    • Pulled up implementation of detectIfNone(), toSortedList() from AbstractRichIterable to RichIterable.
    • Replaced the type specification with the diamond operator ("<>") in primitive collections.
    • Removed duplicate and unnecessary imports.
    • Annotated interfaces with the @FunctionalInterface annotation.
    • Added missing @Override annotations.
    • Fixed angle brackets in Javadoc.
    • Added unit tests for PairPredicate and MapEntryPredicate.

    Miscellaneous

    • Enabled SonarQube analysis.
    • Upgraded versions of maven-jar-plugin, maven-source-plugin, maven-plugin-plugin, maven-compiler, maven-javadoc plugin, checkstyle, JaCoCo.
    • Upgraded versions of Guava, HPPC, JMH, Logback, SLF4J.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

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

    OSGi Bundle

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

    Source code(tar.gz)
    Source code(zip)
  • 8.1.0(Mar 16, 2017)

    The primary theme of 8.1.0 release is to continue leveraging features of Java 8, and add new functionality for API symmetry and completeness.

    New Functionality

    • Implemented primitive case procedures.
    • Implemented primitive case functions.
    • Implemented select and reject with targets on primitive iterables.
    • Implemented collect and flatCollect with target collections on primitiveIterable.stg.
    • Added collect with target collections as default methods in primitiveIterable.stg.
    • Made SummaryStatistics Serializable.
    • Implemented summingBigDecimal, sumByBigDecimal, summingBigInteger, sumByBigInteger on Collectors2.
    • Implemented BigDecimalSummaryStatistics and BigIntegerSummaryStatistics.
    • Implemented SummaryStatistics and Collectors2.summarizing.
    • Integrated JaCoCo for test coverage.
    • Implemented flatCollect on Collectors2.
    • Modified PersonAndPetKataTest.getAgeStatisticsOfPets to use summaryStatistics.
    • Added Abstract primitive Stacks.
    • Add public constructors to Unmodifiable and Synchronized collections.
    • Implement throwing method on functional interface factories which takes a user specified runtime exception function.
    • Implement spliterator on FastList and ArrayAdapter.

    Optimizations

    • Changed collect and collectWith with target collections on InternalArrayIterate to use ensureCapacity for FastLists and ArrayLists.
    • Replaced anonymous inner classes with lambdas and method references.

    Bug fixes

    • Removed JMH tests and generator codes from Javadoc output.
    • Updated links to point to the Eclipse Collections Kata instead of the GS Collections Kata.
    • Fixed addAll() method in CompositeFastList to return false on isEmpty().
    • Fixed exporting all necessary packages in MANIFEST.MF.
    • Added sign jar step as part of deploy build.

    Documentation

    • Added the Eclipse Collections reference guide.
    • Enriched README.md.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="8.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="8.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="8.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="8.1.0"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 8.0.0(Sep 9, 2016)

    The primary theme of the 8.0.0 release is leveraging features of Java 8. In previous versions, Eclipse Collections already used Java 8 in test modules, but the main library targeted Java 5 bytecode. By dropping support for older versions of Java, Eclipse Collections can benefit from new features and better integrate with the standard libraries.

    New Functionality

    • Added static method BooleanArrayList.newWithNValues, following other primitive ArrayLists.
    • Changed MutableBagIterable.addOccurrences(T item, int occurrences) to return the updated number of occurrences instead of void.
    • Implemented Bags.mutable.ofAll(Iterable<? extends T> items) and Bags.mutable.withAll(Iterable<? extends T> items).
    • Implemented Multimap.keySet() to return an unmodifiable SetIterable of keys.
    • Implemented MutableMultimap.putAllPairs(Iterable<Pair<K, V>> keyValuePairs).
    • Implemented LazyIterable.takeWhile(Predicate<? super T> predicate) and LazyIterable.dropWhile(Predicate<? super T> predicate).
    • Implemented unmodifiable BiMaps.
    • Implemented RichIterable.getOnly().
    • Pull up into() from LazyIterable to RichIterable.
    • Made StackIterable implement OrderedIterable.
    • Implemented summarizeInt/Float/Long/Double({Int/Float/Long/Double}Function) on RichIterable
    • Implemented summaryStatistics() on Primitive Iterables.
    • Implemented reduce(BinaryOperator), reduceInPlace(Collector) and reduceInPlace(Supplier, BiConsumer) on RichIterable.
    • Implemented Collectors2 with makeString, toList, toSet, toBag, toStack, toMap, toBiMap, groupBy, to{List/Set/Bag}Multimap.
    • Implemented detectOptional() and detectWithOptional() on RichIterable.
    • Changed the basic functional interface to extend the JDK ones and add default implementation of the JDK SAM so that our types still have a single abstract method.
    • Changed our IntPredicate, LongPredicate, and DoublePredicate to extend the JDK types with the same names.
    • Added a factory class for MutableSortedBagMultimap to Multimaps.
    • Implemented synchronized Multimaps.
    • Implemented selectByOccurrences on primitive Bags.
    • Implemented top/bottomOccurrences on primitive Bags.
    • Changed primitive functional interfaces to extend the corresponding JDK functional interfaces.
    • Made detectOptional methods throw NullPointerException when detecting null value.

    Optimizations

    • In ArrayList.newWithNValues, replace loop with Arrays.fill.
    • Optimized MutableList.chunk() for RandomAccess lists to use the backing array instead of an iterator.
    • Optimized AbstractImmutableList.chunk() by using sublists.

    Bug fixes

    • Fixed bug in ArrayList.reverseThis().
    • Fixed Interval.take(int count) when count is 0. Old behavior was to return an Interval of size 1. This is a behavior breaking change.
    • Changed AbstractSynchronizedRichIterable.groupByUniqueKey() to return MapIterable instead of MutableMap.
    • Changed AbstractMutableMapIterable.groupByUniqueKey() to return MutableMapIterable instead of MutableMap.
    • Changed MutableMapIterable.aggregateBy() to return MutableMap instead of MutableMapIterable.
    • Fixed return types on MapIterable.collect(Function2) overrides.
    • Fixed return type of UnifiedSetWithHashingStrategy.groupByEach() method to preserve hashing strategy.
    • Fixed generics on Multimap.forEachKeyValue().
    • Fixed generics on Multimap.forEachKeyMultiValues().
    • Fixed method signature of sumByInt(), sumByLong(), sumByFloat() and sumByDouble(). Added missing covariant overrides, now calling these iteration patterns on mutable side will return a MutableObjectPrimitiveMap, on immutable side it will return ImmutableObjectPrimitiveMap.
    • Made primitive-object maps more bag-like. Change the filtering and transformation methods to return bags since they contain duplicates and no meaningful order.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="8.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="8.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="8.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="8.0.0"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 8.0.0-M1(Jul 7, 2016)

    This is the 8.0.0 Milestone 1 build.

    New Functionality

    • Added static method BooleanArrayList.newWithNValues, following other primitive ArrayLists.
    • Changed MutableBagIterable.addOccurrences(T item, int occurrences) to return the updated number of occurrences instead of void.
    • Implemented Bags.mutable.ofAll(Iterable<? extends T> items) and Bags.mutable.withAll(Iterable<? extends T> items).
    • Implemented Multimap.keySet() to return an unmodifiable SetIterable of keys.
    • Implemented MutableMultimap.putAllPairs(Iterable<Pair<K, V>> keyValuePairs).
    • Implemented LazyIterable.takeWhile(Predicate<? super T> predicate) and LazyIterable.dropWhile(Predicate<? super T> predicate).
    • Implemented unmodifiable BiMaps.
    • Implemented RichIterable.getOnly().
    • Pull up into() from LazyIterable to RichIterable.
    • Made StackIterable implement OrderedIterable.
    • Implemented summarizeInt/Float/Long/Double({Int/Float/Long/Double}Function) on RichIterable
    • Implemented summaryStatistics() on Primitive Iterables.
    • Implemented reduce(BinaryOperator), reduceInPlace(Collector) and reduceInPlace(Supplier, BiConsumer) on RichIterable.
    • Implemented Collectors2 with makeString, toList, toSet, toBag, toStack, toMap, toBiMap, groupBy, to{List/Set/Bag}Multimap.
    • Implemented detectOptional() and detectWithOptional() on RichIterable.
    • Changed the basic functional interface to extend the JDK ones and add default implementation of the JDK SAM so that our types still have a single abstract method.
    • Changed our IntPredicate, LongPredicate, and DoublePredicate to extend the JDK types with the same names.

    Optimizations

    • In ArrayList.newWithNValues, replace loop with Arrays.fill.
    • Optimized MutableList.chunk() for RandomAccess lists to use the backing array instead of an iterator.
    • Optimized AbstractImmutableList.chunk() by using sublists.

    Bug fixes

    • Fixed bug in ArrayList.reverseThis().
    • Fixed Interval.take(int count) when count is 0. Old behavior was to return an Interval of size 1. This is a behavior breaking change.
    • Changed AbstractSynchronizedRichIterable.groupByUniqueKey() to return MapIterable instead of MutableMap.
    • Changed AbstractMutableMapIterable.groupByUniqueKey() to return MutableMapIterable instead of MutableMap.
    • Changed MutableMapIterable.aggregateBy() to return MutableMap instead of MutableMapIterable.
    • Fixed return types on MapIterable.collect(Function2) overrides.
    • Fixed return type of UnifiedSetWithHashingStrategy.groupByEach() method to preserve hashing strategy.
    • Fixed generics on Multimap.forEachKeyValue().
    • Fixed generics on Multimap.forEachKeyMultiValues().
    • Fixed method signature of sumByInt(), sumByLong(), sumByFloat() and sumByDouble(). Added missing covariant overrides, now calling these iteration patterns on mutable side will return a MutableObjectPrimitiveMap, on immutable side it will return ImmutableObjectPrimitiveMap.
    • Made primitive-object maps more bag-like. Change the filtering and transformation methods to return bags since they contain duplicates and no meaningful order.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="8.0.0-M1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="8.0.0-M1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="8.0.0-M1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="8.0.0-M1"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 7.1.0(Apr 8, 2016)

    The primary theme of the 7.1.0 release is community engagement.

    Community Engagement

    New Functionality

    • Implemented Iterate.toMultimap().
    • Implemented Iterate.groupByAndCollect().
    • Implemented HashBagWithHashingStrategy.

    Optimizations

    • Simplified and optimized a few methods in ImmutableSingletonBag.
    • Fixed performance problem in ArrayStack.minBy().
    • Optimized UnifiedMap.getFirst() to not delegate to an iterator.
    • Optimized AbstractBag for all MutableBagIterable targets, not just MutableBag targets.
    • Optimized iteration patterns in a few LazyIterables to not delegate to an Iterator.
    • Extracted size variables to make iteration patterns in RandomAccessListIterate consistent.

    Test Improvements

    • Implemented Verify.assertListMultimapsEqual(), Verify.assertSetMultimapsEqual(), Verify.assertBagMultimapsEqual(), Verify.assertSortedSetMultimapsEqual(), Verify.assertSortedBagMultimapsEqual().
    • Added new assertions Verify.assertNotSerializable() and Verify.assertNotInstanceOf().
    • Fixed IterableTestCase.checkNotSame() to factor in empty sorted immutable collections having different instances due to construction with a comparator.
    • Added test coverage for additional classes and methods in the java 8 test suite.
    • Replaced forkMode with forkCount for surefire plugin.

    Bug fixes

    • Fixed bug in ArrayIterate.chunk().

    Documentation

    • Added instructions for commit sign-off to contribution guide.
    • Fixed syntax of examples in Javadoc.
    • Added badge for GitHub release notes to the README.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="7.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="7.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="7.1.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="7.1.0"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 7.0.2(Mar 10, 2016)

    Bug Fixes

    • Fixed memory leak in HashBiMap.
    • Fixed incorrect code path in key collision handling and keyset iterator based remove operation in primitive Maps with Hashing Strategy.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="7.0.2" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="7.0.2" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="7.0.2" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="7.0.2"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 7.0.1(Feb 5, 2016)

    Bug Fixes

    Fixed UnifiedSet.ChainedBucket.removeLongChain() method to handle many collisions in one bucket.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="7.0.1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="7.0.1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="7.0.1" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="7.0.1"/>
    
    Source code(tar.gz)
    Source code(zip)
  • 7.0.0(Jan 20, 2016)

    This is the initial release of Eclipse Collections after rebranding GS Collections and migrating the project to the Eclipse Foundation.

    What's changed

    Eclipse Collections 7.0.0 is functionally equivalent to GS Collections 7.0.0, with several non-functional changes related to the migration.

    • Replaced the Apache 2.0 license with the EDL and EPL licenses.
    • Converted package com.gs to org.eclipse and renamed the equivalent directories.
    • Removed the memory-tests module that relies on a third party library with a different license.
    • Updated author information, README.md, and other strings which refered to GS Collections.
    • Updated README.md contents to be in line with Eclipse Collections.
    • Configured git settings.
    • Fixed locale sensitive test cases.
    • Added GPG signing and OSSRH configuration to pom files.

    Acquiring Eclipse Collections

    Maven

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

    Gradle

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

    Ivy

    <dependency org="org.eclipse.collections" name="eclipse-collections-api" rev="7.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections" rev="7.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-testutils" rev="7.0.0" />
    <dependency org="org.eclipse.collections" name="eclipse-collections-forkjoin" rev="7.0.0"/>
    
    Source code(tar.gz)
    Source code(zip)
Java Collections till the last breadcrumb of memory and performance

Koloboke A family of projects around collections in Java (so far). The Koloboke Collections API A carefully designed extension of the Java Collections

Roman Leventov 967 Nov 14, 2022
Eclipse Collections is a collections framework for Java with optimized data structures and a rich, functional and fluent API.

English | 中文 | Deutsch | Español | Ελληνικά | Français | 日本語 | Norsk (bokmål) | Português-Brasil | Русский | हिंदी Eclipse Collections is a comprehens

Eclipse Foundation 2.1k Dec 29, 2022
GS Collections has been migrated to the Eclipse Foundation, re-branded as Eclipse Collections. https://www.eclipse.org/collections/

GS Collections is now Eclipse Collections We are pleased to announce that GS Collections has been migrated to the Eclipse Foundation, re-branded as Ec

null 1.8k Dec 30, 2022
GS Collections has been migrated to the Eclipse Foundation, re-branded as Eclipse Collections. https://www.eclipse.org/collections/

GS Collections is now Eclipse Collections We are pleased to announce that GS Collections has been migrated to the Eclipse Foundation, re-branded as Ec

null 1.8k Dec 30, 2022
Eclipse Foundation 3k Dec 31, 2022
The Java collections framework provides a set of interfaces and classes to implement various data structures and algorithms.

Homework #14 Table of Contents General Info Technologies Used Project Status Contact General Information Homework contains topics: Sorting an ArrayLis

Mykhailo 1 Feb 12, 2022
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput.

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.

null 3k Jan 3, 2023
QuickShell is an Eclipse plugin to use Java JShell inside the Eclipse IDE.

QuickShell is an Eclipse plugin to use Java JShell (REPL) inside Eclipse IDE. JDK 9+ is not installed on your system? No worries, you can still use Qu

Nilesh Khaire 8 Oct 3, 2022
esProc SPL is a scripting language for data processing, with well-designed rich library functions and powerful syntax, which can be executed in a Java program through JDBC interface and computing independently.

esProc esProc is the unique name for esProc SPL package. esProc SPL is an open-source programming language for data processing, which can perform comp

null 990 Dec 27, 2022
A distributed data integration framework that simplifies common aspects of big data integration such as data ingestion, replication, organization and lifecycle management for both streaming and batch data ecosystems.

Apache Gobblin Apache Gobblin is a highly scalable data management solution for structured and byte-oriented data in heterogeneous data ecosystems. Ca

The Apache Software Foundation 2.1k Jan 4, 2023
Jacksum (JAva ChecKSUM) is a free, open source, cross-platform, feature-rich, multi-threaded command line tool for calculating hash values, verifying data integrity, finding files by their fingerprints, and finding algorithms to a hash value.

Jacksum (JAva ChecKSUM) is a free, open source, cross-platform, feature-rich, multi-threaded command line tool for calculating hash values, verifying data integrity, finding files by their fingerprints, and finding algorithms to a hash value.

Johann N. Löfflmann 17 Dec 26, 2022
An advanced and highly optimized Java library to build framework

An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...

Burningwave 119 Dec 21, 2022
JSON Web Token implementation for Java according to RFC 7519. Easily create, parse and validate JSON Web Tokens using a fluent API.

JWT-Java JSON Web Token library for Java according to RFC 7519. Table of Contents What are JSON Web Tokens? Header Payload Signature Features Supporte

Bastiaan Jansen 6 Jul 10, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022
dOOv (Domain Object Oriented Validation) a fluent API for type-safe bean validation and mapping

dOOv (Domain Object Oriented Validation) dOOv is a fluent API for typesafe domain model validation and mapping. It uses annotations, code generation a

dOOv 77 Nov 20, 2022