Skip to content

1.9.1

Choose a tag to compare

@brianburton brianburton released this 14 Oct 14:46
· 734 commits to master since this release

Version 1.9.1

It's been a long time coming but the 1.9 release is finally here! This is a significant release with several new collection types and performance enhancements.

New JImmutableRandomAccessList implementation

Previous releases used a 2-3 tree implementation of JImmutableRandomAccessList that performed adequately but was much slower than the hash trie based JImmutableList implementation. In 1.9 the JImmutableRandomAccessList has been re-implemented as a B-Tree. The B-Tree decreases the average depth of the tree and has more than 2x the performance of the 2-3 tree. In fact benchmarks using large lists (more than 20k values in the list) out performed the standard java.util.ArrayList for sequences of inserts and deletes in random positions within the list. The hash trie is still faster but the performance gap is much smaller than before.

JImmutableMultiset

This new collection provides functionality similar to Guava's Multiset but in an immutable form. Methods in the interface allow the multiset to interact with normal sets in rational ways while also exposing the new capabilities. Hashed, sorted, and in-order versions are available. (shout out to Angela Burton)

JImmutableSetMap

This much needed new collection is similar to JImmutableListMap but values for key are JImmutableSets instead of JImmutableLists. Hashed, sorted, and in-order versions are available. Note that all of the underlying sets are hashed, the sorted and in-order variations affect how the keys are handled, not the sets themselves. (another shout out to Angela)

Expanded Stress Test Tool

The new and improved stress test tool, used for pre-release endurance testing, tests more collection types and covers more methods of all collections than the old one. Greatly expands the pre-release test coverage for the library. (Angela again)

Issue Resolution

#4 Added extra type declarations to work around eclipse compiler bug.

Developer's Notes