Eclipse Collections 10.3 Released

Donald Raab
Aug 9 · 5 min read

This is the release we’ve been waiting for.

Image for post
Image for post
Mt. Fuji in 2006

Thank you to the community

Thank you so much to all of the contributors who donated their valuable time to making Eclipse Collections more feature rich and even higher quality. Your efforts are very much appreciated.

If you’re thinking about contributing to an open source project but aren’t sure, check out this great blog from one of our community contributors. In the blog Sirisha Pratha explains some of the benefits she has experienced as she has become an active contributor in the OSS community.

We are always looking for new contributors to join the Eclipse Collections community. Please consider contributing to Eclipse Collections if you are looking for a project to get started on your journey.

Recognition

The credit belongs to the entire Eclipse Collections community. Your hard work and patience contributing to this library is being recognized. Congratulations and thank you to our entire community. Keep up the great work! You all rock!

Loads of new features and several contributor blogs

Dirk Fauth wrote a blog where he evaluated whether there would be any performance and memory improvements including Eclipse Collections in NatTable. He also raised an issue for a missing feature, contributed the feature, and then updated the blog!

I thanked Dirk for both the blog and code contribution, and he said something in response on Twitter that I found very inspirational.

IMHO this is the way OSS works. Use it, like it, write about it. Find an issue, report it, fix it, contribute back.

Well done, and well said! This is exactly the spirit of community that keeps me working happily in open source.

A suggestion for future releases and future bloggers

The Feature Summary

Features with blogs shared by contributors

  1. FlatCollect into primitive collections — by Alex Goldberg
  2. Implemented Triples — by Brian Vermeer
  3. Support sorting of primitive lists by indirect comparison — by Vladimir Zakharov
  4. Implemented MapIterable.getOrDefault() to allow easy inter-op—by Nikhil Nanivadekar
  5. ContainsBy on RichIterable — by Donald Raab

New Website Translation

New Functionality

  1. Added forEachInBoth to ListIterable with javadoc.
  2. Added new APIs ofOccurrences and withOccurrences, to bag mutable and immutable factories.
  3. Added wrapCopy() to primitive lists to mirror functionality in FastList.
  4. Added singly-linked implementation of immutable stacks.
  5. Added withInitialCapacity() to primitive List and Set factories.
  6. Added toArray() method to primitive iterables which takes an array as a parameter to store the elements of the iterable.
  7. Added default aggregateBy method to RichIterable that takes a target Map.
  8. Implemented Tuples.identicalTwin(), Tuples.identicalTriplet().
  9. Added shuffleThis() operation to primitive lists.
  10. Added fromToExclusive in Interval.
  11. Implemented swap() method on mutable primitive lists.
  12. Implemented subList() on IntInterval.
  13. Introduced pitest mutation testing.
  14. Implemented LongInterval.
  15. Implemented aggregateBy for MapIterable with a variant to aggregate on key and value.
  16. Implemented Null Safe Comparators by Function.

Other Improvements

Documentation Updates

  1. Added Working with GitHub wiki page.
  2. Added Javadocs for immutableObjectPrimitiveMap, immutablePrimitiveObjectMap, immutablePrimitivePrimitiveMap.
  3. Added Javadocs for mutableObjectPrimitiveMap, mutablePrimitiveObjectMap, mutablePrimitivePrimitiveMap, mutablePrimitiveValuesMap.
  4. Added Javadocs for primitiveObjectMaps, primitivePrimitiveMaps, primitiveValuesMaps, objectPrimitiveMaps.
  5. Improved documentation of Function2, Function3 and MutableCollection#injectIntoWith.
  6. Added README_EXAMPLES.md.
  7. Fixed Gradle dependency settings in website.

Bug Fixes

  1. Fixed Javadoc warnings, code generation errors.
  2. Fixed inspections, line-wrapping and whitespace violations.
  3. Fixed symmetry issues with factory methods in Multimaps factory.
  4. Added CheckStyle checks for comma-separated lists that are partially wrapped.

Tech Debt Reduction

  1. Increased test coverage for reduceIfEmpty on primitive iterables, MapIterable.getIfAbsent*(), MultimapsTest.
  2. Used org.eclipse.collections.api.factory instead of org.eclipse.collections.impl.factory wherever possible.
  3. Made primitive*HashMap.keySet() serializable.
  4. Made sun.misc an optional Import-Package in OSGi metadata.
  5. Moved primitiveSort.stg to impl/utility.
  6. Optimized collect methods for primitive Immutable Singleton Bag, Set and List.
  7. Optimized implementations of aggregateBy in Bags to use forEachWithOccurrences.
  8. Pulled up ListIterable.binarySearch(), OrderedIterable.toStack(), RichIterable.groupByUniqueKey(),aggregateBy() as default methods.
  9. Implemented with(), without(), withAll(), withoutAll() as default methods.
  10. Refactored PersonAndPetKatatTest to use newer APIs.
  11. Removed duplicate forEach overrides.
  12. Created a simple utility to aid in Javadoc creation.
  13. Updated common primitive stack template for BooleanArrayStack code generation.
  14. Used direct formulas to calculate sum(), mean(), and average() on IntInterval.
  15. Memoized size() value on IntInterval and Interval.
  16. Optimized toImmutable() method on FastList and Primitive Lists to avoids creating a redundant array copy.
  17. Added @Override annotations for tap() (and one toString()) implementations.

Thank you

I am a Project Lead and Committer for the Eclipse Collections OSS project at the Eclipse Foundation. Eclipse Collections is open for contributions. If you like the library, you can let us know by starring it on GitHub.

Oracle Groundbreakers

Aggregation of articles from Oracle engineers…

Donald Raab

Written by

Java Champion. Creator of the Eclipse Collections OSS Java library (http://www.eclipse.org/collections/). Inspired by Smalltalk. Opinions are my own.

Oracle Groundbreakers

Aggregation of articles from Oracle engineers, Groundbreaker Ambassadors, ACEs, and the developer community on all things Oracle Cloud. The views expressed are those of the authors and not necessarily of Oracle.

Donald Raab

Written by

Java Champion. Creator of the Eclipse Collections OSS Java library (http://www.eclipse.org/collections/). Inspired by Smalltalk. Opinions are my own.

Oracle Groundbreakers

Aggregation of articles from Oracle engineers, Groundbreaker Ambassadors, ACEs, and the developer community on all things Oracle Cloud. The views expressed are those of the authors and not necessarily of Oracle.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store