New Functionality
Helpful and convenient APIs - These are API requested either by the community or by project committers.
- Added Bag.distinctView().
- Added Bags.mutable.withInitialCapacity.
- Added forEachInBoth to Primitive Lists.
- Added MultiReader to Bags, Lists, Sets factory in API module.
- Added Primitive Bag/Set/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, objectPrimitiveMap, primitiveObjectMap, 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 and makeString.
- Added missing implementations of toString().
- Added selectWithIndex and rejectWithIndex to Ordered Primitive Iterables.
- Implemented containsAny, containsNone, containsAnyIterable, containsNoneIterable on RichIterable.
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.
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.
Ongoing maintenance changes
Upgrades to project dependencies - actions/cache, actions/upload-artifact, actions/checkout, checkstyle, maven-site plugin, maven-shade plugin, setup-java. Other changes include converting reference guide to AsciiDoc format.