Apache Commons Collections Release Notes
Release History
| Version |
Date |
Description |
| 4.6.0 |
2026-08-06 |
This is a feature and maintenance release. Java 8 or later is required. |
| 4.5.0 |
2025-04-19 |
This is a feature and maintenance release. Java 8 or later is required. |
| 4.5.0-M3 |
2024-12-15 |
This is a feature and maintenance release. Java 8 or later is required. |
| 4.5.0-M2 |
2024-06-15 |
This milestone release requires Java 8 and adds the package `org.apache.commons.collections4.bloomfilter`. |
| 4.5.0-M1 |
2024-03-31 |
This milestone release requires Java 8 and adds the package `org.apache.commons.collections4.bloomfilter` for review. |
| 4.4 |
2019-07-05 |
Maintenance release. |
| 4.3 |
2018-12-21 |
Update from Java 7 to Java 8, bug fixes, and small changes. |
| 4.2 |
2018-07-11 |
Update from Java 6 to Java 7, bug fixes, and small changes. |
| 4.1 |
2015-11-28 |
This is a security and minor release. |
| 4.0 |
2013-11-27 |
This is a major release: It combines bug fixes, new features and changes to existing features. Most notable changes are: use of generics and other language features introduced in Java 5 (varargs, Iterable), removed deprecated classes / methods and features which are now supported by the JDK, replaced Buffer interface with java.util.Queue, added concept of split maps with respective interfaces Put / Get (see also package splitmap), added new Trie interface together with an implementation of a Patricia Trie. Because of the base package name change, this release can be used together with earlier versions of Commons Collections. The minimal version of the Java platform required to compile and use Commons Collections is Java 5. Users are encouraged to upgrade to this version as, in addition to new features, this release includes numerous bug fixes. |
| 3.2.2 |
2015-11-15 |
This is a security and bugfix release. |
Release 4.6.0 – 2026-08-06
| Type |
Changes |
By |
 |
Wrapping PassiveExpiringMap in Collections.synchronizedMap breaks expiration. Fixes COLLECTIONS-776. Thanks to Gary Gregory. |
ggregory |
 |
org.apache.commons.collections4.map.AbstractReferenceMap.ReferenceEntry.toReference(ReferenceStrength, T, int) now throws IllegalArgumentException instead of Error. Thanks to Gary Gregory. |
ggregory |
 |
Remove deprecation annotation of org.apache.commons.collections4.Factory; this will be deprecated in 5.0 in favor of java.util.function.Supplier. Thanks to Eric Hubert, Gary Gregory. |
ggregory |
 |
Remove deprecation annotation of org.apache.commons.collections4.Predicate; this will be deprecated in 5.0 in favor of java.util.function.Predicate. Thanks to Eric Hubert, Gary Gregory. |
ggregory |
 |
Remove deprecation annotation of org.apache.commons.collections4.Transformer; this will be deprecated in 5.0 in favor of java.util.function.Function. Thanks to Eric Hubert, Gary Gregory. |
ggregory |
 |
Remove deprecation annotation of org.apache.commons.collections4.Closure; this will be deprecated in 5.0 in favor of java.util.function.Consumer. Thanks to Eric Hubert, Gary Gregory. |
ggregory |
 |
MapUtils.getLongValue(Map, K, Function) returns a byte instead of a long. Fixes COLLECTIONS-874. Thanks to Sebastian Götz, Gary Gregory. |
ggregory |
 |
MapUtils.getIntValue(Map, K, Function) returns a byte instead of an int. Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Fix exception message in org.apache.commons.collections4.functors.FunctorUtils.validate(Consumer...) Thanks to Gary Gregory. |
ggregory |
 |
Fix exception message in org.apache.commons.collections4.iterators.UnmodifiableIterator.remove() to match java.util.Iterator.remove(). Thanks to Gary Gregory. |
ggregory |
 |
Calling SetUtils.union on multiple instances of SetView causes JVM to hang. Fixes COLLECTIONS-838. Thanks to Piotr P. Karwasz, Joerg Budischewski. |
pkarwasz |
 |
Improve IteratorUtils.chainedIterator() performance. Fixes COLLECTIONS-722. Thanks to Piotr P. Karwasz, Joerg Budischewski. |
pkarwasz |
 |
Fix UselessOverridingMethod in org.apache.commons.collections4.properties.PropertiesFactory. Thanks to Gary Gregory, PMD. |
ggregory |
 |
OrderedProperties.stringPropertyNames() returns an unordered Set. Fixes COLLECTIONS-693. Thanks to Adam Rauch, Gary Gregory. |
ggregory |
 |
Fix SortedProperties.keySet() returned an unsorted Set. Thanks to Gary Gregory. |
ggregory |
 |
Fix SortedProperties.propertyNames() returned an unsorted Enumeration. Thanks to Gary Gregory. |
ggregory |
 |
Fix SortedProperties.stringPropertyNames() returned an unsorted Set. Thanks to Gary Gregory. |
ggregory |
 |
Fix SortedProperties.forEach() called its consumer out of order. Thanks to Gary Gregory. |
ggregory |
 |
Fix Apache RAT plugin console warnings. Thanks to Gary Gregory. |
ggregory |
 |
Add MultiValuedMap.inverted() #665. Thanks to Paul King, Gary Gregory, Sebb. |
ggregory |
 |
PatriciaTrie submap and range view operations silently mutate trie structure resulting in ConcurrentModificationException for any iterating threads #672. Fixes COLLECTIONS-885. Thanks to John Griffin, Gary Gregory. |
ggregory |
 |
[javadoc] CompositeSet.addComposited(Set) does not throw NullPointerException when null is passed #675. Fixes COLLECTIONS-886. Thanks to Partha Protim Paul. |
ggregory |
 |
ConcurrentReferenceHashMap.remove(key), remove(key, value), replace(key, value), and replace(key, oldValue, newValue) throw NullPointerException inconsistently. Fixes COLLECTIONS-887. Thanks to Partha Paul, Gary Gregory. |
ggregory |
 |
PatriciaTrie incompatible with Java 21 (JEP 431 Sequenced Collections). Fixes COLLECTIONS-888. Thanks to Marc Carter, Gary Gregory. |
ggregory |
 |
Reject non-positive entry count in bag/multiset doReadObject (#679). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
Fix most Junit 5 nested tests (#681). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
MultiMapUtils.getXXX ensure safe copy (#669). Fixes COLLECTIONS-881. Thanks to Suhyeon Park, Gary Gregory. |
ggregory |
 |
Re-validate entries in PredicatedMap/PredicatedCollection readObject (#682). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
IndexedCollection.remove(Object) removes all values for a non-unique index key. Fixes COLLECTIONS-889. Thanks to Ruiqi Dong, Gary Gregory. |
ggregory |
 |
TransformIterator throws NullPointerException when its transformer is null. Fixes COLLECTIONS-890. Thanks to Ruiqi Dong, Gary Gregory. |
ggregory |
 |
IndexedCollection.add(Object) mutates unique indexed collections before rejecting duplicate keys. Fixes COLLECTIONS-892. Thanks to Ruiqi Dong, Gary Gregory. |
ggregory |
 |
MapUtils.invertMap() improves HashMap construction (#652). Fixes COLLECTIONS-878. Thanks to Maxim Safronov, Gary Gregory. |
ggregory |
 |
Validate order and uniqueness invariants in decorator readObject() (#684). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
TransformIterator now fail-fast on a null Iterator (#686). Thanks to Gary Gregory. |
ggregory |
 |
[COLLECTIONS-884] Fix JUnit 5 test discovery for Map EntrySet and Values views (#689). Fixes COLLECTIONS-884. Thanks to sankalp suman, Ben Manes. |
ggregory |
 |
Reject non-positive maxSize in LRUMap.doReadObject() (#690). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
[javadoc] Document that BloomFilter merge operations are non-atomic and a filter that throws during a merge should be considered invalid (#695). Thanks to Naveed Khan, Alex Herbert, Gary Gregory. |
ggregory |
 |
Fix AbstractMapBag.retainAll removing all copies when the other bag has more (#692). Thanks to Vasiliy Mikhailov, Gary Gregory. |
ggregory |
 |
Fix integer overflow in SetOperations.cosineSimilarity (#693). Thanks to Vasiliy Mikhailov, Gary Gregory. |
ggregory |
 |
Validate deserialized size in CircularFifoQueue.readObject (#678). Thanks to Vasiliy Mikhailov, Gary Gregory. |
ggregory |
 |
Do not mutate the input map in SwitchTransformer.switchTransformer (#696). Thanks to Vasiliy Mikhailov, Gary Gregory. |
ggregory |
 |
Do not mutate the input map in SwitchClosure.switchClosure, ClosureUtils.switchMapClosure and TransformerUtils.switchMapTransformer (#700). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Fix stale size in AbstractMapMultiSet view iterator remove (#701). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
Stop ExtendedMessageFormat seekNonWs reading past the pattern end (#1740). Thanks to Javid Khan, Gary Gregory. |
ggregory |
 |
Remove stale keys in OrderedProperties compute and merge (#702). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
Fix expiration bypass in PassiveExpiringMap when wrapped in SynchronizedMap (#694). Fixes COLLECTIONS-776. Thanks to sankalp suman, Gary Gregory. |
ggregory |
 |
Fix MapUtils.getIntValue(Map, K, Function) returning a byte (#704). Thanks to Dexter.k, Gary Gregory. |
ggregory |
 |
Bring (Collection compliant) MultiSet family to (non-compliant) Bag parity (#703). Fixes COLLECTIONS-893. Thanks to Paul King, Gary Gregory. |
ggregory |
 |
AbstractMapBag and AbstractMapMultiSet.add(Object, int) overflow the size and element count past Integer.MAX_VALUE (#705). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
TreeBag documentation should explicitly warn about infinite loop as a result of concurrent writes (#707). Fixes COLLECTIONS-894. Thanks to Paul King, Sol Thiessen, Gary Gregory. |
ggregory |
 |
Add TransformedMultiSet plus fill minor gaps for MultiSet vs. Bags (#708). Fixes COLLECTIONS-896. Thanks to Paul King, Gary Gregory. |
ggregory |
 |
Deprecate the Bag family in favor of the MultiSet family (#709). Fixes COLLECTIONS-895. Thanks to Paul King, Gary Gregory. |
ggregory |
 |
CompositeCollection, CompositeSet, CompositeMap, AbstractMultiValuedMap and AbstractMultiSet size() overflow int when the total exceeds Integer.MAX_VALUE (#710). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
DualHashBidiMap, DualLinkedHashBidiMap, and DualTreeBidiMap entrySet() Map.Entry.setValue(Object) returns the new value instead of the previous value (#711). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
PatriciaTrie ignores trailing null characters in keys (#712). Fixes COLLECTIONS-714. Thanks to sankalp suman, Gary Gregory. |
ggregory |
 |
Flat3Map entrySet().remove(Object) removes a mapping when only the key matches, ignoring the entry value (#714). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
SetUniqueList and ListOrderedSet leave the backing collection inconsistent when add(int, Object) or addAll(int, Collection) is called with an out-of-range index. Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
CollectionUtils.collate(Iterable, Iterable, Comparator, boolean) does not remove duplicate null elements when includeDuplicates is false (#715). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Do not register a value collection until an add succeeds (#717). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Increment modCount after the bounds check in TreeList add and remove (#716). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Add messages when throwing NullPointerException. Thanks to Gary Gregory. |
ggregory |
 |
Reject remove on the Unmodifiable map from SplitMapUtils.readableMap (#718). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Keep OrderedProperties keySet and values in sync with the map (#719). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Clarify ambiguous @return Javadoc in PredicateUtils. Fixes COLLECTIONS-859. Thanks to Daniele, THE_ZAID, Gary Gregory. |
ggregory |
 |
Synchronize forEach() in SynchronizedCollection (#720). Thanks to Naveed Khan, Gary Gregory. |
ggregory |
 |
Add generics to UnmodifiableIterator for the wrapped type. Thanks to Gary Gregory. |
ggregory |
 |
Add a Maven benchmark profile for JMH. Thanks to Gary Gregory. |
ggregory |
 |
Add a Maven benchmark profile for JMH. Thanks to Gary Gregory. |
ggregory |
 |
Add SortedMultiSet interface, TreeMultiSet implementation, sorted multiset decorators, and MultiSetUtils factory methods, giving MultiSet feature parity with SortedBag/TreeBag. Fixes COLLECTIONS-893. Thanks to Paul King. |
paulk |
 |
Add MultiSetUtils.containsOccurrences/removeOccurrences/retainOccurrences providing Bag's cardinality-respecting semantics under explicit names, and Bag-to-MultiSet migration notes in the Bag javadoc. Fixes COLLECTIONS-893. Thanks to Paul King. |
paulk |
 |
Add IterableUtils.sumSizes(Iterable<? extends Collection<E>>). Thanks to Gary Gregory. |
ggregory |
 |
Bump org.apache.commons:commons-parent from 81 to 103 #612, #645, #662, #663. Thanks to Gary Gregory, Dependabot. |
ggregory |
 |
Bump com.google.guava:guava-testlib from 33.3.1-jre to 33.5.0-jre #644. Thanks to Gary Gregory. |
ggregory |
 |
Bump PMD from 7.8.0 to 7.13.0 (now inherited from parent POM). Thanks to Gary Gregory. |
ggregory |
 |
Bump org.easymock:easymock from 5.5.0 to 5.6.0 #617. Thanks to Gary Gregory. |
ggregory |
 |
[test] Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.20.0 #625. Thanks to Gary Gregory. |
ggregory |
 |
[test] Bump commons-io:commons-io from 2.19.0 to 2.22.0. Thanks to Gary Gregory. |
ggregory |
 |
Bump commons-codec:commons-codec from 1.18.0 to 1.22.1. Thanks to Gary Gregory. |
ggregory |
 |
Bump doxia.module.markdown.version from 2.0.0 to 2.1.0. Thanks to Gary Gregory. |
ggregory |
 |
Bump com.google.guava:guava-testlib from 33.5.0-jre to 33.6.0-jre (#680). Thanks to Gary Gregory, Dependabot. |
ggregory |
Release 4.5.0 – 2025-04-19
| Type |
Changes |
By |
 |
Refactor AbstractPropertiesFactory.load(File) to use NIO. Thanks to Gary Gregory. |
ggregory |
 |
Refactor AbstractPropertiesFactory.load(String) to use NIO. Thanks to Gary Gregory. |
ggregory |
 |
Add IteratorUtils.toSet(Iterator). Thanks to Gary Gregory. |
ggregory |
 |
Add IteratorUtils.toSet(Iterator, int). Thanks to Gary Gregory. |
ggregory |
 |
Add EnumerationUtils.toSet(Enumeration). Thanks to Gary Gregory. |
ggregory |
 |
Please add OWASP Dependency Check to the build. Fixes COLLECTIONS-693. Thanks to Gary Gregory. |
ggregory |
 |
Bump commons-codec:commons-codec from 1.17.1 to 1.18.0 #591. Thanks to Gary Gregory. |
ggregory |
 |
Bump org.apache.commons:commons-parent from 78 to 81 #2296. Thanks to Gary Gregory, Dependabot. |
ggregory |
 |
Bump commons.jacoco.version from 0.8.13-SNAPSHOT to 0.13.0. Thanks to Gary Gregory. |
ggregory |
 |
[test] Bump commons-io:commons-io from 2.18.0 to 2.19.0. Thanks to Gary Gregory. |
ggregory |
Release 4.5.0-M3 – 2024-12-15
| Type |
Changes |
By |
 |
Complete bloom filter documentation #507. Fixes COLLECTIONS-857. Thanks to Claude Warren. |
ggregory |
 |
Package private AbstractEmptyIterator implements ResettableIterator so subclasses don't. Thanks to Gary Gregory. |
ggregory |
 |
Deprecate AbstractEmptyIterator.add(E) without replacement. Thanks to Gary Gregory. |
ggregory |
 |
Add missing Javadocs. Thanks to Gary Gregory. |
ggregory |
 |
PatriciaTrie constructor reuse the stateless singleton StringKeyAnalyzer.INSTANCE. Thanks to Gary Gregory. |
ggregory |
 |
Deprecate StringKeyAnalyzer.StringKeyAnalyzer() in favor of StringKeyAnalyzer.INSTANCE. Thanks to Gary Gregory. |
ggregory |
 |
[Functional] FunctorUtils.validate(Closure...) is now FunctorUtils.validate(Consumer...). Thanks to Gary Gregory. |
ggregory |
 |
[Functional] FunctorUtils.validate(Predicate...) is now FunctorUtils.validate(java.util.function.Predicate...). Thanks to Gary Gregory. |
ggregory |
 |
[Functional] FunctorUtils.validate(Transformer...) is now FunctorUtils.validate(Function...). Thanks to Gary Gregory. |
ggregory |
 |
Increase test coverage for ListUtils #517. Thanks to Dávid Szigecsán. Gary Gregory. |
ggregory |
 |
Use the Junit (Jupiter) API #518. Thanks to Dávid Szigecsán. |
ggregory |
 |
BloomFilterExtractor.flatten() should throw an exception instead of returning null. Thanks to Gary Gregory, Alex Herbert. |
ggregory |
 |
Improve WrappedBloomFilterTest. All tests now assert copy() the same way. Thanks to Gary Gregory, Claude Warren. |
ggregory |
 |
Javadoc CollectionBag.add* to throw ClassCastException. Fixes COLLECTIONS-860. Thanks to Gary Gregory, Daniele. |
ggregory |
 |
Fix generics in IteratorChain.IteratorChain(Collection). Thanks to Gary Gregory. |
ggregory |
 |
Fix generics in org.apache.commons.collections4.IteratorUtils.chainedIterator(Collection). Thanks to Gary Gregory. |
ggregory |
 |
Javadoc: Document interaction between peek and filter iterator #515. Fixes COLLECTIONS-856. Thanks to Benjamin Confino, Gary Gregory. |
ggregory |
 |
Javadoc: Update ClosureUtils Javadoc to match runtime. Fixes COLLECTIONS-815. Thanks to Elia Bertolina, Gary Gregory. |
ggregory |
 |
Javadoc: Update ClosureUtils Javadoc to match runtime. Fixes COLLECTIONS-815. Thanks to Gary Gregory. |
ggregory |
 |
Migrate to JUnit 5. Fixes COLLECTIONS-777. Thanks to Gary Gregory. |
ggregory |
 |
Fix NullPointerException in FilterIterator.setNextObject(). Thanks to Gary Gregory. |
ggregory |
 |
EqualPredicate.test(Object) should return true if the parameter is the same object as given the constructor. Thanks to Gary Gregory. |
ggregory |
 |
LayerManager.Builder implements Supplier. Thanks to Gary Gregory. |
ggregory |
 |
Add CollectionUtils.duplicateList(Collection). Thanks to Gary Gregory, hemanth0525. |
ggregory |
 |
Add CollectionUtils.duplicateSet(Collection). Thanks to Gary Gregory, hemanth0525. |
ggregory |
 |
Add CollectionUtils.duplicateSequencedSet(Collection). Thanks to Gary Gregory, hemanth0525. |
ggregory |
 |
Add HashBag.HashBag(Iterable). Thanks to Gary Gregory. |
ggregory |
 |
Add TreeBag.TreeBag(Iterable). Thanks to Gary Gregory. |
ggregory |
 |
Add CartesianProductIterator #509. Fixes COLLECTIONS-858. Thanks to Alexey Pelykh, Alex Herbert, Gary Gregory. |
ggregory |
 |
Add missing methods in AbstractMapTests. Thanks to Gary Gregory. |
ggregory |
 |
Add ConcurrentReferenceHashMap. Fixes COLLECTIONS-700. Thanks to Gary Gregory. |
ggregory |
 |
Add commons.easymock.version to parameterize EasyMock version. Thanks to Gary Gregory. |
ggregory |
 |
Add org.apache.commons.collections4.IteratorUtils.chainedIterator(Iterator<? extends Iterator<? extends E>>). Fixes COLLECTIONS-869. Thanks to Gary Gregory. |
ggregory |
 |
Add ArrayListValuedLinkedHashMap #560. Fixes COLLECTIONS-533. Thanks to Peter De Maeyer. |
ggregory |
 |
Add missing test AbstractIteratorTest.testForEachRemaining(). Thanks to Gary Gregory. |
ggregory |
 |
Add FilterIterator.removeNext() #564. Thanks to Gary Gregory, Claude Warren. |
ggregory |
 |
Add ExtendedIterator and tests #564. Fixes COLLECTIONS-870. Thanks to Claude Warren, Gary Gregory. |
ggregory |
 |
Refactor ExtendedIterator and FilterIterator with a new interface IteratorOperations. Thanks to Gary Gregory. |
ggregory |
 |
Add LinkedHashSetValuedLinkedHashMap #565. Fixes COLLECTIONS-871. Thanks to Peter De Maeyer. |
ggregory |
 |
Bump org.apache.commons:commons-parent from 71 to 78 #534, #545, #550 #555, #566. Thanks to Gary Gregory. |
ggregory |
 |
Update bloom filter documentation #508. Fixes COLLECTIONS-857. Thanks to Claude Warren. |
ggregory |
 |
Bump commons-codec:commons-codec from 1.17.0 to 1.17.1 #514. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 #516, #525, #535. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump org.hamcrest:hamcrest from 2.2 to 3.0 #522, #532. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump com.google.guava:guava-testlib from 33.2.1-jre to 33.3.1-jre #531, #549. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump MathJax from 2.7.2 to 2.7.9. Thanks to Gary Gregory. |
ggregory |
 |
[test] Bump org.easymock:easymock from 5.3.0 to 5.5.0 #521, #576. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
[test] Bump commons-io:commons-io from 2.16.1 to 2.18.0 #544, #575. Thanks to Dependabot, Gary Gregory. |
ggregory |
Release 4.5.0-M2 – 2024-06-15
| Type |
Changes |
By |
 |
Add layered Bloom filter clean method #476. Fixes COLLECTIONS-852. Thanks to Claude Warren, Alex Herbert. |
ggregory |
 |
Deprecate Lists incompatible with Java 21, add new variant of AbstractLinkedList #485. Fixes COLLECTIONS-842. Thanks to Julian Reschke. |
aherbert |
 |
Deprecate Closure in favor of java.util.function.Consumer. Thanks to Gary Gregory. |
ggregory |
 |
Deprecate Factory in favor of java.util.function.Supplier. Thanks to Gary Gregory. |
ggregory |
 |
Deprecate Predicate in favor of java.util.function.Predicate. Thanks to Gary Gregory. |
ggregory |
 |
Deprecate Transformer in favor of java.util.function.Function. Thanks to Gary Gregory. |
ggregory |
 |
Change LayerManager to use List and added generics to LayerdedBloomFilter #481. Fixes COLLECTIONS-853. Thanks to Claude Warren, Alex Herbert, Gary Gregory. |
aherbert |
 |
Fix PMD UselessOverridingMethod in PropertiesFactory.EmptyProperties. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in AbstractHashedMap. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in AbstractLinkedMap. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in CaseInsensitiveMap. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in CollectionUtils. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in DefaultEquator. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in IndexUtils. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in LinkIterator. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in MapUtils. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in PredicateUtils. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in ReferenceMapIterator. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in StringKeyAnalyzer. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Fix PMD UnnecessaryFullyQualifiedName in TransformerUtils. Thanks to PMD, Gary Gregory. |
ggregory |
 |
Renaming bloomfilter components and methods as per ticket #492. Fixes COLLECTIONS-854. Thanks to Claude Warren, Alex Herbert, Gary Gregory. |
aherbert |
 |
Fix Java 22 builds through Easymock upgrade #502. Thanks to Gary Gregory. |
ggregory |
 |
Fixed hashing calculation as per report #501. Fixes COLLECTIONS-855. Thanks to Claude Warren, Alex Herbert, Gary Gregory. |
aherbert |
 |
Bump org.apache.commons:commons-parent from 67 to 71 #473, #503. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump tests commons-io:commons-io from 2.16.0 to 2.16.1 #475. Thanks to Dependabot. |
ggregory |
 |
Bump optional commons-codec:commons-codec from 1.16.1 to 1.17.0. Thanks to Dependabot. |
ggregory |
 |
Bump com.google.guava:guava-testlib from 33.1.0-jre to 33.2.1-jre #487, #500. Thanks to Dependabot. |
ggregory |
 |
Bump org.easymock:easymock from 5.2.0 to 5.3.0 #502. Thanks to Dependabot. |
ggregory |
Release 4.5.0-M1 – 2024-03-31
| Type |
Changes |
By |
 |
Use assertThrows V2. Fixes COLLECTIONS-780. Thanks to Arturo Bernal. |
kinow |
 |
Use assertThrows. Fixes COLLECTIONS-778. Thanks to Arturo Bernal. |
kinow |
 |
Fix flaky AbstractMultiValuedMapTest#testToString. Fixes COLLECTIONS-771. Thanks to Xin Tong. |
kinow |
 |
Fix flaky UnmodifiableMultiValuedMapTest. Fixes COLLECTIONS-769. Thanks to Xin (Cynthia) Tong. |
kinow |
 |
Refine Javadoc and fix typos. Fixes COLLECTIONS-764. Thanks to XenoAmess. |
kinow |
 |
Update Javadoc of ListIteratorWrapper#remove. Fixes COLLECTIONS-765. Thanks to Tobias Kiecker. |
kinow |
 |
Add hashCode method to CollectionUtils that supports an equator parameter. Fixes COLLECTIONS-708. Thanks to dota17. |
kinow |
 |
Fix checkstyle issues regarding missing newline at end of file, and CRLF vs LF. Fixes COLLECTIONS-759. |
kinow |
 |
A potential misleading comment #82. Fixes COLLECTIONS-727. Thanks to XiangzheXu, XZ-X. |
ggregory |
 |
Using existing class in example given in Javadocs. #85. Fixes COLLECTIONS-679. Thanks to David Mollitor, Mikko Maunu. |
ggregory |
 |
Add test cases to IteratorUtilsTest #86. Fixes COLLECTIONS-729. Thanks to dota17. |
ggregory |
 |
Fix typos in release notes and Javadoc for AbstractHashedMap and AbstractHashedMapTest #88. Thanks to dota17. |
ggregory |
 |
Add missing @throws comment for SwitchTransformer.switchTransformer. #124. Fixes COLLECTIONS-740. Thanks to Pengyu Nie. |
ggregory |
 |
Fix inconsistent @throws comments in DefaultedMap #123. Fixes COLLECTIONS-739. Thanks to Pengyu Nie. |
ggregory |
 |
Fix links to release notes and update contents for 4.4 #127. Thanks to Dominik Stadler. |
ggregory |
 |
Fix checkstyle syntax (was scope, is now accessModifiers) via PR #235. Thanks to Jin Xu. |
kinow |
 |
Fix PassiveExpiringMap documentation for methods that involve accessing the entire map. Fixes COLLECTIONS-786. Thanks to vandrewskis. |
kinow |
 |
SortedProperties should sort entrySet() as well as keys() #256. Thanks to Michael Berry. |
ggregory |
 |
SetUniqueList.createSetBasedOnList doesn't add list elements to return value. Fixes COLLECTIONS-796. Thanks to Clemens Kurz. |
kinow |
 |
UnmodifiableNavigableSet can be modified by pollFirst() and pollLast(). Fixes COLLECTIONS-799. Thanks to Stefano Cordio. |
kinow |
 |
Use Java 8 and method reference. #274. Thanks to Arturo Bernal. |
ggregory |
 |
Use Java 8 features #228. Fixes COLLECTIONS-788. Thanks to Arturo Bernal. |
ggregory |
 |
Upgraded org.junit.Test to org.junit.jupiter.api.Test #295, #304. Fixes COLLECTIONS-807. Thanks to Pradeesh Kumar, samabcde. |
ggregory |
 |
ReferenceMap iterator remove violates contract #300. Fixes COLLECTIONS-802. Thanks to samabcde, Ben Manes. |
kinow |
 |
Fix flaky EmptyPropertiesTest#testSave. Fixes COLLECTIONS-812. Thanks to Ng Tsz Sum. |
kinow |
 |
Use java.lang.Objects#equals; eliminate a couple of nulls #307. Thanks to Steve Bosman. |
ggregory |
 |
CollectionUtils.removeAll() not throwing NPE #340. Fixes COLLECTIONS-814. Thanks to angusdev. |
kinow |
 |
Fix minor typos #323 Thanks to Marc Wrobel. |
ggregory |
 |
AbstractReferenceMap.SoftRef implements hashCode() but not equals(). Thanks to Gary Gregory. |
ggregory |
 |
AbstractReferenceMap.WeakRef implements hashCode() but not equals(). Thanks to Gary Gregory. |
ggregory |
 |
Use Java style array decelerations #362. Thanks to Arturo Bernal. |
ggregory |
 |
Remove use of JUnit4 junit.framework.Test class #371. Fixes COLLECTIONS-806. Thanks to Piyush Sagar. |
ggregory |
 |
Migrate Map tests to JUnit 5 assertions #391. Fixes COLLECTIONS-839. Thanks to Sam Ng, Gary Gregory, Bruno P. Kinoshita. |
ggregory |
 |
Fix links in Javadoc and documentations #325. Fixes COLLECTIONS-835. Thanks to Marc Wrobel. |
kinow |
 |
Correct test of Collection toArray(Object[]) vs toArray() to optionally ignore array order.
Ordering is not specified for some collections such as Bags. Thanks to Partha Protim Paul. |
aherbert |
 |
Correct test of BidiMap to optionally ignore testing the key set matches the values order.
Ordering is not specified for some BidiMaps such as DualHashBidiMaps. Fixes COLLECTIONS-836. Thanks to Anant Dahiya. |
aherbert |
 |
Return 0 immediately if the given iterable is null in IterableUtils#size. Update tests. Fixes COLLECTIONS-737. Thanks to Prodigysov. |
kinow |
 |
Javadoc for FixedSizeList should warn that modifying underlying list is still allowed and is not prevented. Fixes COLLECTIONS-697. Thanks to Ranjan George. |
eax |
 |
Fill in some map test cases #104. Thanks to dota17. |
ggregory |
 |
Remove the redundant assertNull in IterableUtilsTest.find and update Javadocs. Fixes COLLECTIONS-738. Thanks to Pengyu Nie. |
kinow |
 |
Simplify two remove-if loops #77. Fixes COLLECTIONS-724. Thanks to Eitan Adler. |
ggregory |
 |
Fix inconsistent @throws comments in ListOrderedSet #125. Thanks to Chen. |
ggregory |
 |
Update size to capacity for GrowthList #90. Fixes COLLECTIONS-704. Thanks to dota17. |
ggregory |
 |
TransformedSortedBagTest should work with TransformedSortedBag, not TransformedBag #98. Thanks to dota17. |
ggregory |
 |
Remove the parentheses in the error message in CircularFifoQueue #107. Thanks to dota17. |
ggregory |
 |
MultiKey.getKeys class cast exception. Fixes COLLECTIONS-747. Thanks to Gary Gregory, Walter Laan. |
ggregory |
 |
Use newline at end of file, and convert to Unix (LF instead of CRLF) fixing checkstyle #147. Fixes COLLECTIONS-759. Thanks to Bruno P. Kinoshita. |
ggregory |
 |
Fixed the typo and deal the NPE with Objects.requireNonNull #118. Thanks to Chen. |
ggregory |
 |
Javadoc BidiMap classes #146. Fixes COLLECTIONS-757. Thanks to Chen. |
ggregory |
 |
Assert ensureCapacity #198. Fixes COLLECTIONS-773. Thanks to Martin Monperrus. |
ggregory |
 |
Fix flaky CollectionUtilsTest.getFromMap() #200. Fixes COLLECTIONS-775. Thanks to Xin Tong, Bruno P. Kinoshita, Gary Gregory. |
ggregory |
 |
Minor Improvements #203, #208. Thanks to Arturo Bernal. |
ggregory |
 |
Fix typo erroring -> erring #202. Thanks to EruDev. |
ggregory |
 |
Encountered an IllegalStateException while traversing with Flat3Map.entrySet(). #115. Fixes COLLECTIONS-734. Thanks to Chen. |
ggregory |
 |
Better NPE messages in CollectionUtils with Objects.requireNonNull #117. Thanks to Chen, Bruno P. Kinoshita, Gary Gregory, Michael Osipov. |
ggregory |
 |
Improve MapUtils with the null checks, add JUnit for it and add Javadoc for the parameter indent. #126. Thanks to Chen. |
ggregory |
 |
Simplify Assertion. Fixes COLLECTIONS-793. Thanks to Arturo Bernal. |
kinow |
 |
[StepSecurity] ci: Harden GitHub Actions #401. Thanks to step-security-bot, Gary Gregory. |
ggregory |
 |
Fix punctuation and minor Javadoc issues #409. Thanks to Martin Wiesner, Bruno P. Kinoshita, Gary Gregory. |
ggregory |
 |
Deprecate IterableUtils 0-argument constructor. Thanks to Gary Gregory. |
ggregory |
 |
Tests in org.apache.commons.collections4.multimap should not depend on map iteration order, see also #429. Fixes COLLECTIONS-850. Thanks to Gary Gregory, Anirudh Madhavan. |
ggregory |
 |
Reimplement FixedOrderComparator#equals() and hashCode(), see also #392. Fixes COLLECTIONS-850. Thanks to Gary Gregory, Saurabh Rahate. |
ggregory |
 |
Implement Layered Bloom filter #402. Fixes COLLECTIONS-843. Thanks to Claude Warren, Alex Herbert, Gary Gregory. |
ggregory |
 |
Let org.apache.commons.collections4.properties.[Sorted]PropertiesFactory accept XML input. Fixes COLLECTIONS-748. Thanks to Gary Gregory. |
ggregory |
 |
Add private constructor to ArrayUtils; better Javadocs, #195. Fixes COLLECTIONS-772. Thanks to Arturo Bernal, Alex Herbert, Gary Gregory, Bruno P. Kinoshita. |
ggregory |
 |
Add tests for MapUtils. Fixes COLLECTIONS-760. Thanks to Isira Seneviratne. |
kinow |
 |
Test subMap and tailMap #94. Thanks to dota17. |
ggregory |
 |
Add junit for add, remove, setCount and entrySet in the UnmodifiableMultiSetTest #95. Thanks to dota17. |
ggregory |
 |
Add two test cases in UnmodifiableQueueTest #96. Thanks to dota17. |
ggregory |
 |
Update two test cases in AbstractMultiValuedMapTest testPutAll_map1 testPutAll_map2 #97. Thanks to dota17. |
ggregory |
 |
Add a test case for AbstractMultiValuedMapTest testToString() #100. Thanks to dota17. |
ggregory |
 |
Add a test case AbstractMultiValuedMapTest#testMultiValuedMapIterator() #108. Thanks to dota17. |
ggregory |
 |
Add junit for getWithNull and subList in LazyListTest; #103. Thanks to dota17. |
ggregory |
 |
Add test cases to ArrayListValuedHashMapTest; #106. Thanks to dota17. |
ggregory |
 |
Add test cases in UnmodifiableMultiValuedMapTest; #102. Thanks to dota17. |
ggregory |
 |
Add CollectionUtils removeRange, removeCount #91. Fixes COLLECTIONS-674. Thanks to dota17. |
ggregory |
 |
Add ListUtils.getFirst() and getLast(). Thanks to Gary Gregory. |
ggregory |
 |
Add singleton ObjectToStringComparator.INSTANCE. Thanks to Gary Gregory. |
ggregory |
 |
Add github/codeql-action. |
ggregory |
 |
Add Guava testlib tests. Fixes COLLECTIONS-811. Thanks to Ben Manes. |
kinow |
 |
Add BloomFilter contribution. Fixes COLLECTIONS-728. Thanks to Claude Warren. |
ggregory |
 |
Add lambdas function to provide default values in MapUtils #81. Fixes COLLECTIONS-726. Thanks to liuhaozzu, Gary Gregory. |
ggregory |
 |
Add three test cases in UnmodifiableQueueTest #105. Thanks to dota17. |
ggregory |
 |
Add org.apache.commons.collections4.EnumerationUtils.asIterable(Enumeration). Fixes COLLECTIONS-744. Thanks to Gary Gregory. |
ggregory |
 |
Add org.apache.commons.collections4.properties.PropertiesFactory.EMPTY_PROPERTIES. Fixes COLLECTIONS-746. Thanks to Gary Gregory. |
ggregory |
 |
Add PropertiesFactory. Fixes COLLECTIONS-746. Thanks to Gary Gregory. |
ggregory |
 |
Add org.apache.commons.collections4.properties.OrderedProperties and OrderedPropertiesFactory. Thanks to Gary Gregory. |
ggregory |
 |
Make AbstractPatriciaTrie public #407. Thanks to Vadim, Claude Warren, Gary Gregory, Alex Herbert. |
ggregory |
 |
Add test cases for indexOf and contains method of ArrayUtils class #215. Thanks to Ajay Kumar Jha, Bruno P. Kinoshita, Claude Warren. |
ggregory |
 |
Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. |
ggregory |
 |
Bump org.easymock:easymock from 4.0.2 to 5.2.0 #352, #355, #375, #414. Thanks to Gary Gregory, Dependabot. |
ggregory |
 |
Bump actions/cache. Thanks to Dependabot, Gary Gregory. |
kinow |
 |
Bump actions/setup-java. Thanks to Dependabot, Gary Gregory. |
kinow |
 |
Bump actions/checkout. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump codecov/codecov-action. Thanks to Dependabot. |
kinow |
 |
Bump Apache commons-parent from 48 to 67. Thanks to Gary Gregory, Dependabot. |
ggregory |
 |
Bump Jacoco from 0.8.4 to 0.8.8. Thanks to Gary Gregory. |
ggregory |
 |
Bump tests from Apache Commons Lang 3.9 to 3.11. Thanks to Gary Gregory. |
ggregory |
 |
Bump maven-checkstyle-plugin 3.1.0 to 3.2.1 #379. Thanks to Gary Gregory. |
ggregory |
 |
Bump checkstyle from 8.29 to 9.3. Thanks to Gary Gregory. |
ggregory |
 |
Bump to JUnit v5.6.2 #136. Fixes COLLECTIONS-754. Thanks to John Patrick. |
ggregory |
 |
Migrate JUnit 4.12 to 5.9.1 #324, #338. Fixes COLLECTIONS-777. Thanks to John Patrick, Gary Gregory, Dependabot. |
ggregory |
 |
Bump Hamcrest to 2.2. Fixes COLLECTIONS-753. Thanks to John Patrick. |
ggregory |
 |
Remove deprecated sudo setting. #161. Thanks to dengliming. |
ggregory |
 |
Bump tests from commons-io:commons-io 2.6 to 2.16.0 #180, #469. Thanks to Gary Gregory. |
ggregory |
 |
Bump maven-pmd-plugin from 3.12.0 to 3.19.0 #167, #196, #253, #311, #334. Thanks to Dependabot, Gary Gregory. |
ggregory |
 |
Bump optional commons-codec:commons-codec from 1.14 to 1.16.1. Thanks to Gary Gregory. |
ggregory |
 |
Bump commons.junit.version from 5.6.2 to 5.8.2 #181 #213 #236 #252 #254 #268. Thanks to Dependabot. |
ggregory |
 |
Bump maven-antrun-plugin from 1.8 to 3.1.0 #170, #303. Fixes COLLECTIONS-774. Thanks to Dependabot. |
ggregory |
 |
Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #211. Thanks to Dependabot. |
kinow |
 |
Migrate assert to Assertions #209. Fixes COLLECTIONS-779. Thanks to Arturo Bernal, Gary Gregory. |
ggregory |
 |
Add and use CollectionUtils.INDEX_NOT_FOUND constant. Fixes COLLECTIONS-781. Thanks to Arturo Bernal, Gary Gregory. |
ggregory |
 |
Bump commons-lang3 from 3.11 to 3.14.0. Thanks to Dependabot, Gary Gregory. |
kinow |
 |
Add new variables to oac.collections4.CollectionUtils and use them in the code base. Fixes COLLECTIONS-785. Thanks to Arturo Bernal. |
kinow |
 |
Bump easymock from 4.2 to 4.3 #226. Thanks to Dependabot. |
kinow |
 |
Bump maven-pmd-plugin from 3.15.0 to 3.16.0 #286. Thanks to Dependabot. |
ggregory |
 |
Bump commons-parent from 52 to 58 #299, #368, #373, #393. Thanks to Dependabot, Gary Gregory. |
kinow |
 |
Bump japicmp from 0.15.4 to 0.16.0. Thanks to Dependabot. |
kinow |
 |
Bump pmd from 6.46.0 to 6.52.0 #318, #327, #333, #347. Thanks to Dependabot, Gary Gregory. |
kinow |
 |
Bump guava-testlib from 31.1-jre to 33.1.0-jre #394, #395, #404, #405, #411, #423, #438, #462. Thanks to Dependabot. |
ggregory |
Release 4.4 – 2019-07-05
| Type |
Changes |
By |
 |
NullPointerExceptions in CompositeCollection, CompositeSet, and CompositeMap. Fixes COLLECTIONS-710. Thanks to Yu Shi, Gary Gregory. |
ggregory |
 |
Implement Collection's removeIf(). Fixes COLLECTIONS-715. Thanks to morningmemo, Gary Gregory. |
ggregory |
 |
Fix LRUMap exception message. Fixes COLLECTIONS-718. Thanks to Eitan Adler. |
ggregory |
 |
Create a PropertiesFactory and SortedPropertiesFactory. Fixes COLLECTIONS-719. Thanks to Gary Gregory. |
ggregory |
 |
Support Transformer for LazyList #52. Fixes COLLECTIONS-719. Thanks to Stephan Windmüller, Bruno P. Kinoshita. |
ggregory |
 |
Make use of FunctionalInterface #48. Fixes COLLECTIONS-723. Thanks to Eitan Adler, SOC, Bruno P. Kinoshita. |
ggregory |
 |
Don't include email address in Exception messages. Fixes COLLECTIONS-716. Thanks to Sebb. |
ggregory |
Release 4.3 – 2018-12-21
| Type |
Changes |
By |
 |
Use boolean operator for boolean result. Fixes COLLECTIONS-691. Thanks to Eitan Adler. |
kinow |
 |
Update platform requirement from Java 7 to 8. Fixes COLLECTIONS-688. |
ggregory |
 |
Link to Javadoc API broken. Fixes COLLECTIONS-689. Thanks to Richard Walker. |
ggregory |
 |
Replace use of deprecated Class#newInstance() PR #49. Fixes COLLECTIONS-692. Thanks to Gary Gregory, Eitan Adler. |
ggregory |
 |
AbstractReferenceMap made easier for subclassing; PR #51. Fixes COLLECTIONS-696. Thanks to Maxim Solodovnik. |
ggregory |
 |
StackOverflowError in SetUniqueList.add() when it receives itself. Fixes COLLECTIONS-701. Thanks to Shin Hong, Don Jeba. |
ggregory |
 |
The PassiveExpiringMap#put() method should return the previous record only if not expired. Fixes COLLECTIONS-703. Thanks to Tomas Tulka. |
ggregory |
 |
Add SetUtils.unmodifiableSet(T... items) method. Fixes COLLECTIONS-706. Thanks to Richard Eckart de Castilho, Gary Gregory. |
ggregory |
 |
MultiSet.Entry::getCount() isn't 0 after removing the last element. Fixes COLLECTIONS-709. Thanks to Robert Wertman. |
ggregory |
Release 4.2 – 2018-07-11
| Type |
Changes |
By |
 |
Add test for MultiSetUtils. Fixes COLLECTIONS-681. Thanks to Stephan Fuhrmann. |
kinow |
 |
HashEntry array object naming data initialized with double the size during deserialization. Fixes COLLECTIONS-599. Thanks to Tejas Patel, Saleem Akbar, Gary Gregory. |
ggregory |
 |
Unit tests MapUtilsTest and ListIteratorWrapperTest no longer fail on Java 9. Fixes COLLECTIONS-662. Thanks to Vamsi Kavuri. |
chtompki |
 |
Intermittent test failures in Windows for HashSetValuedHashMap. Fixes COLLECTIONS-661. |
kinow |
 |
Uncomment test in AbstractMapTest regarding LRUMap equals. Fixes COLLECTIONS-660. |
kinow |
 |
Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. Fixes COLLECTIONS-658. |
britter |
 |
Fix site build on Java 8. Fixes COLLECTIONS-656. |
ggregory |
 |
Update Javadoc to Build on Java 1.8. Fixes COLLECTIONS-653. |
kinow |
 |
Build status, Coverage status and Maven central weren't in README.md. Fixes COLLECTIONS-606. Thanks to Vamsi Kavuri. |
chtompki |
 |
Improve efficiency of DefaultedMap.get. Fixes COLLECTIONS-602. Thanks to John Mark. |
kinow |
 |
Small improvements for generics, conditional statements, and warnings suppressions. Fixes COLLECTIONS-603. Thanks to Artem Konovalov. |
kinow |
 |
Update platform from Java 6 to Java 7. Fixes COLLECTIONS-655. |
ggregory |
 |
Web site spelling error: MultiValuedMapeList. Fixes COLLECTIONS-594. Thanks to Javen O'Neal. |
ggregory |
 |
Correction of Javadoc for org.apache.commons.collections4.functors.CatchAndRethrowClosure. Fixes COLLECTIONS-597. Thanks to Enrique. |
ggregory |
 |
Add null-safe MapUtils.size(Map<?, ?>) method. Fixes COLLECTIONS-589. Thanks to Gary Gregory. |
ggregory |
 |
PatriciaTrie prefixMap clear throws NullPointerException. Fixes COLLECTIONS-586. Thanks to Shailender Bathula, Gary Gregory. |
ggregory |
 |
Add class SortedProperties to sort keys. Fixes COLLECTIONS-654. |
ggregory |
 |
org.apache.commons.collections4.ListUtils.union(List, List) should pre-allocate result list. Fixes COLLECTIONS-666. Thanks to BELUGA BEHR. |
ggregory |
 |
Update org.apache.commons.collections4.CollectionUtils.addAll(Collection<C>, C[]) to addAll(Collection<C>, C...). Fixes COLLECTIONS-669. Thanks to BELUGA BEHR, Gary Gregory. |
ggregory |
 |
Add CollectionUtils containsAny method for primitive array: org.apache.commons.collections4.CollectionUtils.containsAny(Collection<?>, T...). Fixes COLLECTIONS-668. Thanks to Gary Gregory. |
ggregory |
 |
Synchronized queue wrapper in QueueUtils. Fixes COLLECTIONS-575. Thanks to Guram Savinov, Grzegorz Rożniecki, Bruno P. Kinoshita, Gary Gregory. |
ggregory |
 |
Add org.apache.commons.collections4.IteratorUtils.first(Iterator). Fixes COLLECTIONS-670. Thanks to Gary Gregory. |
ggregory |
 |
Add org.apache.commons.collections4.IterableUtils.first(Iterable). Fixes COLLECTIONS-671. Thanks to Gary Gregory. |
ggregory |
 |
The verification of unsupported iterator methods is not complete. Fixes COLLECTIONS-678. Thanks to Oscar Luis Vera Pérez. |
ggregory |
 |
ListUtils.partition potential integer overflow. Fixes COLLECTIONS-673. Thanks to John Mark, Stephan Fuhrmann. |
ggregory |
Release 4.1 – 2015-11-28
| Type |
Changes |
By |
 |
Added new interfaces "MultiValuedMap", "ListValuedMap" and "SetValuedMap"
as a replacement for "MultiMap". Decorators and implementations reside in
the "multimap" package and a "MultiMapUtils" class has been added.
The existing interface "MultiMap" as well as the concrete implementation
"MultiValueMap" has been deprecated. Fixes COLLECTIONS-508. |
tn |
 |
Deprecated various method in "CollectionUtils" in favor of similar
methods in the newly introduced "IterableUtils". Fixes COLLECTIONS-551. |
tn |
 |
Serialization support for unsafe classes in the functor package
has been removed as this can be exploited for remote code execution
attacks. Classes considered to be unsafe are: CloneTransformer,
ForClosure, InstantiateFactory, InstantiateTransformer, InvokerTransformer,
PrototypeCloneFactory, PrototypeSerializationFactory, WhileClosure. Fixes COLLECTIONS-580. |
tn |
 |
Added validation when de-serializing a "MultiValueMap#ReflectionFactory":
only Collection classes are allowed, otherwise an UnsupportedOperationException
will be thrown during de-serialization. Fixes COLLECTIONS-580. |
tn |
 |
Added new MultiSet interface which is intended to be a replacement for
the Bag interface. The main difference is that a MultiSet is fully compatible
to the Collection contract. Fixes COLLECTIONS-567. |
tn |
 |
Subclasses of MultiKey did not re-calculate their hashcode after de-serialization. Fixes COLLECTIONS-576. Thanks to Stephan Roch. |
tn |
 |
Added set operations to "SetUtils": union, difference, intersection and disjunction.
The operations return a view of the result that is backed by the input sets. Fixes COLLECTIONS-572. |
tn |
 |
All constructors and static factory methods will now throw a "NullPointerException" if
a required input argument is null. Previously sometimes a "IllegalArgumentException" was used. Fixes COLLECTIONS-570. |
tn |
 |
Deprecated methods "synchronizedCollection(Collection)" and "unmodifiableCollection(Collection)"
in class "CollectionUtils", the corresponding methods in "java.util.Collections" should be used instead. Fixes COLLECTIONS-571. |
tn |
 |
"IteratorUtils#collate(...)" methods did not use natural ordering when a
null comparator was provided. Fixes COLLECTIONS-566. |
tn |
 |
Added support to specify the initial size of a "LRUMap". Fixes COLLECTIONS-557. Thanks to Philippe Mouawad. |
tn |
 |
Added decorators for "NavigableSet" interface. Fixes COLLECTIONS-565. |
tn |
 |
Added new class "FluentIterable" to support a fluent API for manipulating
Iterable instances. Additionally various supporting methods have been
added to "IterableUtils" and "IteratorUtils". Fixes COLLECTIONS-464,COLLECTIONS-442. |
tn |
 |
Added new "ZippingIterator" and factory methods "IteratorUtils#zippingIterator(...)". Fixes COLLECTIONS-464. |
tn |
 |
Added new decorator "SkippingIterator" and factory methods "IteratorUtils#skippingIterator(...)". Fixes COLLECTIONS-464. |
tn |
 |
Added method "SetUtils#newIdentityHashSet()" which returns a new identity HashSet
using reference-equality instead of object-equality. Fixes COLLECTIONS-556. |
tn |
 |
Upgraded minimum java requirement to Java 6 (up from Java 5). Fixes COLLECTIONS-562. |
tn |
 |
Added method "LRUMap#get(Object, boolean)" that allows to query the map
without affecting the least recently used order. Fixes COLLECTIONS-395. Thanks to David Hawthorne. |
tn |
 |
Changed return type of "ListOrderedSet#remove(int)" from Object to the generic type parameter. Fixes COLLECTIONS-558. Thanks to Felix Rabe. |
tn |
 |
Added clarification to Javadoc of "TreeBag#add(Object)" wrt null arguments. Fixes COLLECTIONS-555. Thanks to M Kim. |
tn |
 |
Added "toString(...)" methods to newly created "IterableUtils" and existing "IteratorUtils"
to get a string representation of an Iterable/Iterator instance similar to "Arrays#toString(...)". Fixes COLLECTIONS-427. Thanks to Gonçalo Marques. |
tn |
 |
Reverted performance improvement for "SetUniqueList#retainAll(Collection)"
introduced in 4.0. Added clarifying Javadoc wrt runtime complexity instead. Fixes COLLECTIONS-427. |
tn |
 |
Reverted performance improvement for "ListOrderedSet#retainAll(Collection)"
introduced in 4.0. Added clarifying Javadoc wrt runtime complexity instead. Fixes COLLECTIONS-426. |
tn |
 |
Added a Builder for "PredicatedCollection". Elements added to the builder
that fail the predicate will not throw an IllegalArgumentException. The builder
supports creating predicated lists, bags, sets and queues. Fixes COLLECTIONS-530. Thanks to Erik. |
tn |
 |
Documented runtime complexity of "CollectionUtils#removeAll(Collection, Collection). Fixes COLLECTIONS-545. Thanks to Oswaldo Olivo. |
tn |
 |
"AbstractCollectionDecorator" doesn't forward equals and hashCode anymore. Fixes COLLECTIONS-543. |
tn |
 |
Documented runtime complexity of "CollectionUtils#retainAll(Collection, Collection). Fixes COLLECTIONS-544. Thanks to Oswaldo Olivo. |
tn |
 |
"AbstractHashedMap" still inherits from "AbstractMap", contrary to what
the class Javadoc stated. The inheritance will now be removed in v5.0. Fixes COLLECTIONS-542. |
tn |
 |
Changed scope of "CircularFifoQueue#isAtFullCapacity()" to public. Fixes COLLECTIONS-539. Thanks to Guram Savinov. |
tn |
 |
The map returned by "PatriciaTrie#prefixMap()" did not contain all keys
that are prefixed by the given search key in some rare cases. Fixes COLLECTIONS-525. Thanks to Zigler Zhang. |
tn |
 |
Added new methods "IterableUtils#partition(...)" to partition an input collection
into separate output collections based on evaluation of one or more predicates. Fixes COLLECTIONS-511. Thanks to Nathan Blomquist, Brent Worden. |
tn |
 |
Harmonized signature of factory methods for functor-related classes which take
a collection as input with their array counterparts. Fixes COLLECTIONS-537. Thanks to Frank Jakop. |
tn |
 |
Added overloaded method "CollectionUtils#get(Enumeration, int)" and simplified
code for "CollectionUtils#get(Object, int)". Fixes COLLECTIONS-540. Thanks to Daniel Stewart, Issam El Atif. |
tn |
 |
Improved check for null input in "MapUtils#putAll(Map, Object[])". Fixes COLLECTIONS-536. Thanks to Tagir Valeev. |
tn |
 |
Added clarifying Javadoc wrt runtime complexity of "CollectionBag#retainAll". Fixes COLLECTIONS-534. Thanks to Oswaldo Olivo. |
tn |
 |
Added methods "removeAll(...)" and "retainAll(...)" to "CollectionUtils" that perform
equality checks using the provided "Equator" object instead of "Object#equals()". Fixes COLLECTIONS-529. Thanks to Alexander Muthmann, Dipanjan Laha. |
tn |
 |
Use correct type bounds in
"CollectionUtils#isEqualCollection(Collection, Collection, Equator)" to
prevent a "ClassCastException" at runtime for invalid inputs. Fixes COLLECTIONS-531. Thanks to Dipanjan Laha. |
tn |
 |
Removed unneeded private method in "PassiveExpiringMap". Fixes COLLECTIONS-523. Thanks to Thiago Andrade. |
tn |
 |
Added clarification to the Javadoc of "MapUtils#toProperties(Map)" in case
of null keys/values. Fixes COLLECTIONS-516. Thanks to Cyrille Artho. |
tn |
 |
"ListOrderedSet#listOrderedSet(List)" did not remove duplicates from the
input list as advertised in the Javadoc. Fixes COLLECTIONS-524. Thanks to J Goodfellow. |
tn |
 |
"MultiKeyMap" was throwing a "NullPointerException" for various operations
if two key arguments have been used and the second was "null". Fixes COLLECTIONS-521. Thanks to Maxime Nay. |
tn |
 |
Updated code example for "PredicatedList". Fixes COLLECTIONS-522. Thanks to Erik. |
tn |
 |
"TransformingComparator" and "FixedOrderComparator" did not comply with
the contract of "Object#equals". Fixes COLLECTIONS-512. Thanks to Cyrille Artho. |
tn |
 |
Fix compilation errors when using source level 1.8 and a recent java 8 compiler. Fixes COLLECTIONS-510. Thanks to Hollis Waite. |
tn |
 |
Clarified Javadoc of "CollectionBag" wrt changes from the original Bag interface. Fixes COLLECTIONS-509. |
tn |
 |
Removed wrong type bounds for "ComparatorUtils#chainedComparator(...)". Fixes COLLECTIONS-507. Thanks to Gerson. |
tn |
 |
Added Javadoc clarification to class "CollectionUtils" that input objects which
override "Object#equals(Object)" must also maintain the general contract of
"Object#hashCode()" as various utility methods take advantage of sets/maps/bags. Fixes COLLECTIONS-506. Thanks to Anthony Communier. |
tn |
 |
Added new transformer "IfTransformer" and factory methods "TransformerUtils#ifTransformer(...)"
which replace "TransformerUtils#switchTransformer(Predicate, Transformer, Transformer)". Fixes COLLECTIONS-503. Thanks to Josh Cain. |
tn |
 |
Added new decorator "BoundedIterator" and factory methods "IteratorUtils#boundedIterator(...)". Fixes COLLECTIONS-471. Thanks to Radford Tam. |
tn |
Release 4.0 – 2013-11-27
| Type |
Changes |
By |
 |
Resolved generic parameter inconsistency for various static fields, e.g. BagUtils.EMPTY_BAG,
TruePredicate.INSTANCE and many others. All accessible static fields use raw types so that
they can be used directly without explicit casting. To avoid compiler warnings about unchecked
conversion and/or rawtypes use the corresponding factory methods, e.g. BagUtils.emptyBag(). Fixes COLLECTIONS-502. |
tn |
 |
Renamed methods "V MultiKeyMap#remove(Object, Object, ...)" to
"V MultiKeyMap#removeMultiKey(Object, Object, ...)" to avoid future conflicts
with a default method of the Map interface in Java 8. Fixes COLLECTIONS-501. |
tn |
 |
Renamed "V MultiMap#remove(K, V)" to "boolean MultiMap#removeMapping(K, V)"
to avoid future conflicts with a default method of the Map interface in Java 8. Fixes COLLECTIONS-500. |
tn |
 |
Refactored the test framework for Bag implementations to extend from
"AbstractCollectionTest" by decorating the concrete Bag instance with
a CollectionBag or CollectionSortedBag. Fixes COLLECTIONS-499. |
tn |
 |
"CollectionBag" will now also respect the contract of the decorated bag in case
a null argument is provided to either removeAll or retainAll. Fixes COLLECTIONS-498. |
tn |
 |
Added bag decorator "CollectionSortedBag" which decorates a SortedBag to make it
comply with the Collection contract. Fixes COLLECTIONS-497. |
tn |
 |
"UnmodifiableBoundedCollection" does now also implement the marker interface "Unmodifiable"
similar as all other unmodifiable decorators. Fixes COLLECTIONS-496. |
tn |
 |
"UnmodifiableTrie#unmodifiableTrie(Trie)" will not decorate again an already
unmodifiable Trie. Also the return type has been changed to "Trie" to be consistent
with other Unmodifiable decorators. Fixes COLLECTIONS-495. |
tn |
 |
Moved "Equator" interface to base package for consistency. Fixes COLLECTIONS-494. Thanks to Emmanuel Bourg. |
tn |
 |
Added "CollectionsUtils#matchesAll(Iterable, Predicate)" to test if all elements
of a collection match a given predicate. Fixes COLLECTIONS-488. Thanks to Josh Cain. |
tn |
 |
Accept wildcard input where possible, e.g. in copy-constructors, Unmodifiable* decorators
and iterators. Fixes COLLECTIONS-485. Thanks to Hollis Waite. |
tn |
 |
No collision detection/resolution was performed when calling "CompositeSet#addComposited(...)"
with more than one Set as argument. Additionally use varargs parameters instead of arrays
in CompositeSet and CompositeCollection constructor and addComposited method. Fixes COLLECTIONS-481. Thanks to Hollis Waite. |
tn |
 |
Narrow return type of "BidiMap#values()" to Set as the values are required to be unique. Fixes COLLECTIONS-480. Thanks to Hollis Waite. |
tn |
 |
Fixed conversion of timeout parameters in "PassiveExpiringMap". Fixes COLLECTIONS-475. |
tn |
 |
Exception in "ListOrderedMap#putAll" if map contains null values. Fixes COLLECTIONS-474. Thanks to Ning Chen. |
sebb |
 |
Made field "collection" in class "AbstractCollectionDecorator" private and added
setter "setCollection(Collection)" with scope protected to set the decorated collection
during de-serialization. Fixes COLLECTIONS-473. Thanks to sebb. |
tn |
 |
Improved performance of "AbstractMapBag#containsAll(Collection)" by returning immediately
after a difference has been found. Fixes COLLECTIONS-472. Thanks to Adrian Nistor. |
tn |
 |
Renamed class "TransformedMap" in package "splitmap" to "TransformedSplitMap" to avoid
name clash with similar class in package "map". Fixes COLLECTIONS-470. Thanks to sebb. |
tn |
 |
Added bag decorator "CollectionBag" which decorates a bag to make it comply with the
Collection contract. Fixes COLLECTIONS-468. |
tn |
 |
Replaced "Collection" with "Iterable" for method arguments where applicable. Fixes COLLECTIONS-466. |
tn |
 |
Added "PushbackIterator" decorator to support pushback of elements during iteration. Fixes COLLECTIONS-463. Thanks to Andy Seaborne, Claude Warren. |
tn |
 |
Added "PeekingIterator" decorator to support one-element lookahead during iteration. Fixes COLLECTIONS-462. Thanks to Andy Seaborne, Claude Warren. |
tn |
 |
Added additional clarification to Javadoc of interface "Put" wrt return type of
"put(Object, Object)" method. Fixes COLLECTIONS-461. Thanks to Matt Benson, sebb. |
tn |
 |
Changed "IteratorChain" to use internally a "Queue" instead of a "List". Iterators are
removed from the queue once used and can be garbage collected after being exhausted.
Additionally removed the methods "setIterator(Iterator)" and "getIterators()". Fixes COLLECTIONS-460. |
tn |
 |
Removed method "setArray(Object)" in class ArrayIterator and method "setArray(Object[])"
in class ObjectArrayIterator and made fields array, startIndex and endIndex final. Fixes COLLECTIONS-459. Thanks to sebb. |
tn |
 |
Removed unused class "AbstractUntypedCollectionDecorator<E, D>". Fixes COLLECTIONS-458. |
sebb |
 |
Added methods "ListUtils#longestCommonSubsequence(...)" to get the longest common subsequence
of arbitrary lists or CharSequences. Fixes COLLECTIONS-456. |
tn |
 |
Changed scope of fields to private where appropriate. Fixes COLLECTIONS-455. |
sebb |
 |
An iterator over a "Flat3Map#entrySet()" will now return
independent Map.Entry objects that will not change anymore when
the iterator progresses. Fixes COLLECTIONS-454. |
tn |
 |
Several closure and transformer implementations in the functors package
will now copy an array as input to their constructor (e.g. ChainedClosure). Fixes COLLECTIONS-453. |
tn |
 |
Change base package to org.apache.commons.collections4. Fixes COLLECTIONS-452. |
tn |
 |
The constructors for all Utils classes are now private to prevent instantiation. Fixes COLLECTIONS-451. |
tn |
 |
Added methods "forAllButLastDo(Collection, Closure)" and "forAllButLastDo(Iterator, Closure)"
to class "CollectionUtils". Fixes COLLECTIONS-450. Thanks to J. Moldawski. |
tn |
 |
Tree traversal with a TreeListIterator will not be affected anymore by
the removal of an element directly after a call to previous(). Fixes COLLECTIONS-447. Thanks to Jeffrey Barnes. |
tn |
 |
Added method "CollectionUtils#isEqualCollection(Collection, Collection, Equator)". Fixes COLLECTIONS-446. Thanks to Matt Lachman. |
tn |
 |
Adapt and/or ignore several unit tests when run on an IBM J9 VM (specification version 1.6.0)
due to a faulty "java.util.TreeMap" implementation. Fixes COLLECTIONS-445. |
tn |
 |
SetUniqueList.set(int, E) now works correctly if the object to be inserted
is already placed at the given position. Fixes COLLECTIONS-444. Thanks to Thomas Vahrst, John Vasileff. |
tn |
 |
MultiKeyMap.clone() now correctly calls super.clone(). Fixes COLLECTIONS-441. Thanks to Thomas Vahrst. |
tn |
 |
Added "emptyIfNull" methods to classes "CollectionUtils", "ListUtils", "SetUtils"
and "MapUtils". Fixes COLLECTIONS-436. Thanks to Arman Sharif. |
tn |
 |
Improve performance of "TreeList#addAll" and "TreeList(Collection)" by converting
the input collection into an AVL tree and efficiently merge it into the existing tree. Fixes COLLECTIONS-433. Thanks to Jeffrey Barnes. |
tn |
 |
Replaced "Buffer" interface with "java.util.Queue". Kept "CircularFifoQueue"
as well as "Predicated", "Transformed" and "Unmodifiable" decorators. Fixes COLLECTIONS-432. |
tn |
 |
Added method "CollectionUtils#containsAll(Collection, Collection)" with guaranteed
runtime complexity of O(n + m) and space complexity of O(n). This method may yield much
better performance than "Collection#containsAll(Collection)" depending on the use-case and
type of collection used. Fixes COLLECTIONS-429,COLLECTIONS-434. Thanks to Adrian Nistor, Mert Guldur. |
tn |
 |
Fixed performance issue in "SetUniqueList#retainAll" method for large collections. Fixes COLLECTIONS-427. Thanks to Mert Guldur. |
brentworden |
 |
Fixed performance issue in "ListOrderedSet#retainAll" method for large collections. Fixes COLLECTIONS-426. Thanks to Adrian Nistor. |
brentworden |
 |
Improved performance of "ListOrderedMap#remove(Object)" method. Fixes COLLECTIONS-425. Thanks to Adrian Nistor. |
tn |
 |
"CompositeSet" does not inherit from "CompositeCollection" anymore. The inner class
"SetMutator" has been updated accordingly. Fixes COLLECTIONS-424. Thanks to Michael Pradel. |
tn |
 |
Added method "CollectionUtils#permutations(Collection)" and class "PermutationIterator"
to generate unordered permutations of a collection. Fixes COLLECTIONS-422. Thanks to Benoit Corne. |
tn |
 |
Update Javadoc for "ListUtils#lazyList()" and "ListUtils#fixedSizeList()". Fixes COLLECTIONS-421. Thanks to Benedikt Ritter. |
tn |
 |
Added clarifying Javadoc wrt runtime complexity of "AbstractDualBidiMap#retainAll". Fixes COLLECTIONS-419. Thanks to Adrian Nistor. |
tn |
 |
Added clarifying Javadoc wrt runtime complexity of "AbstractLinkedList#retainAll". Fixes COLLECTIONS-417. Thanks to Adrian Nistor. |
tn |
 |
Added clarifying Javadoc wrt runtime complexity of "AbstractLinkedList#removeAll". Fixes COLLECTIONS-415. Thanks to Adrian Nistor. |
tn |
 |
Fixed several compilation issues with older Java 1.6 compilers. Fixes COLLECTIONS-414. |
tn |
 |
Improved performance of "removeAll()" method for sets returned by "DualHashBidiMap#entrySet()". Fixes COLLECTIONS-413. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "CollectionUtils#subtract" methods. Fixes COLLECTIONS-412. Thanks to Adrian Nistor. |
tn |
 |
Fixed possible "IndexOutOfBoundsException" in "ListOrderedMap#putAll". Fixes COLLECTIONS-411. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "SetUniqueList#addAll" method. Fixes COLLECTIONS-410. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "ListOrderedSet#addAll" method. Fixes COLLECTIONS-409. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "SetUniqueList#removeAll". Fixes COLLECTIONS-408. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "ListOrderedSet#remove(Object)" in case the object is
not contained in the Set. Fixes COLLECTIONS-407. Thanks to Adrian Nistor. |
tn |
 |
Improved performance of "ListUtils#subtract" method. Fixes COLLECTIONS-406. Thanks to Adrian Nistor. |
tn |
 |
Added "ListUtils#select" and "ListUtils#selectRejected" methods. Fixes COLLECTIONS-405. Thanks to Adam Dyga. |
brentworden |
 |
Added an implementation of Eugene Myers difference algorithm in package
o.a.c.c.sequence. Fixes COLLECTIONS-404. Thanks to Jordane Sarda. |
luc |
 |
Added missing null check in "CollectionUtils#addIgnoreNull(Collection, Object)". Fixes COLLECTIONS-400. Thanks to Shin Hwei Tan. |
tn |
 |
Added new method "get(int)" to "CircularFifoQueue". Fixes COLLECTIONS-399. Thanks to Sebb. |
tn |
 |
Added "LazyIteratorChain" iterator. Fixes COLLECTIONS-396. Thanks to Jeff Rodriguez. |
tn |
 |
Added "ListUtils#partition" method to split a List into consecutive sublists. Fixes COLLECTIONS-393. Thanks to Chris Shayan. |
tn |
 |
Fixed Javadoc for "MapUtils#toProperties(Map)". Fixes COLLECTIONS-391. Thanks to Shin Hwei Tan. |
tn |
 |
Clarified Javadoc for "TransformerUtils#mapTransformer" for null input. Fixes COLLECTIONS-389. Thanks to Shin Hwei Tan. |
tn |
 |
Clarified Javadoc for "FactoryUtils#prototypeFactory" for null input. Fixes COLLECTIONS-388. Thanks to Shin Hwei Tan. |
tn |
 |
Fixed inconsistent Javadoc for "MapUtils#synchronizedMap(Map)". Fixes COLLECTIONS-384. Thanks to Shin Hwei Tan. |
ggregory |
 |
Added "CollectionUtils#forAllDo" implementation which takes an "Iterator" as input. Fixes COLLECTIONS-383. Thanks to Adrian Cumiskey. |
tn |
 |
Change maven coordinates to "org.apache.commons.commons-collections4". Fixes COLLECTIONS-382. Thanks to Olivier Lamy. |
tn |
 |
Move the project structure to a standard maven layout. Fixes COLLECTIONS-381. Thanks to Olivier Lamy. |
sebb |
 |
Fixed infinite loop when calling "UnmodifiableBoundedCollection#unmodifiableBoundedCollection()". Fixes COLLECTIONS-380. Thanks to Dave Brosius. |
tn |
 |
Fixed Javadoc for several methods wrt expected NullPointerExceptions. Fixes COLLECTIONS-379. Thanks to Shin Hwei Tan. |
tn |
 |
Added method "ListUtils#defaultIfNull(List, List)". Fixes COLLECTIONS-375. Thanks to Ivan Hristov. |
tn |
 |
TransformingComparator now supports different types for its input/output values. Fixes COLLECTIONS-372. |
tn |
 |
"DualTreeBidiMap" now uses the correct comparator for the reverse map during de-serialization. Fixes COLLECTIONS-364. |
sebb |
 |
"TransformedMap" in the package "splitmap" can now be serialized. Fixes COLLECTIONS-363. |
sebb |
 |
"CollectionUtils#filter(Iterable, Predicate)" will now return whether the collection
has been modified. Fixes COLLECTIONS-362. Thanks to Jean-Noel Rouvignac. |
brentworden |
 |
Add method "CollectionUtils#filterInverse(Iterable, Predicate)". Fixes COLLECTIONS-361. Thanks to Jean-Noel Rouvignac. |
tn |
 |
"FilterListIterator#hasNext" does not throw a NullPointerException anymore
to comply to the Java iterator specification. Fixes COLLECTIONS-360. Thanks to Sai Zhang. |
jochen |
 |
"ListUtils#intersection(List, List)" will now also work correctly if there
are duplicate elements in the provided lists. Fixes COLLECTIONS-359. Thanks to Mark Shead. |
bayard |
 |
"AbstractCollectionDecorator" will now use internally "decorated()" to access
the decorated collection. Fixes COLLECTIONS-352. Thanks to Adam Gent. |
bayard |
 |
Removed features which are now supported by the JDK. Fixes COLLECTIONS-351. Thanks to Henri Yandell. |
bayard |
 |
Removed debug output in "MapUtils#getNumber(Map)". Fixes COLLECTIONS-350. Thanks to Michael Akerman. |
bayard |
 |
Fixed Javadoc for all "transformedXXX(XXX)" methods in the respective Utils classes
to clarify that existing objects in the list are not transformed. Fixes COLLECTIONS-348. Thanks to Paul Benedict. |
brentworden |
 |
Singleton classes in package "functors" are now correctly de-serialized. Fixes COLLECTIONS-343. Thanks to Goran Hacek. |
mbenson |
 |
"NOPClosure" is now a final class. Fixes COLLECTIONS-341. Thanks to Goran Hacek. |
mbenson |
 |
Removed broken methods "equals(Object)" and "hashCode()" in class "NOPClosure". Fixes COLLECTIONS-340. Thanks to Goran Hacek. |
mbenson |
 |
Simplified exceptions as the cause is available from the parent. Fixes COLLECTIONS-336. Thanks to sebb. |
bayard |
 |
Fixed cache assignment for "TreeBidiMap#entrySet". Fixes COLLECTIONS-335. Thanks to sebb. |
jochen |
 |
Synchronized access to lock in "StaticBucketMap#size()". Fixes COLLECTIONS-334. Thanks to sebb. |
jochen |
 |
Added clarification to Javadoc of "ListOrderedMap" that "IdentityMap" and
"CaseInsensitiveMap" are not supported. Fixes COLLECTIONS-332. Thanks to Tom Parker. |
jochen |
 |
Improve Javadoc of "CollatingIterator" wrt the used "Comparator" and throw a
NullPointerException in "CollatingIterator#least" if no comparator is set. Fixes COLLECTIONS-331. Thanks to Michael Krkoska. |
jochen |
 |
"LRUMap#keySet()#remove(Object)" will not throw a "ConcurrentModificationException" anymore. Fixes COLLECTIONS-330. Thanks to Joerg Schaible. |
mbenson |
 |
Improved performance of "ListUtils#intersection(List, List)". Fixes COLLECTIONS-328. Thanks to Thomas Rogan, Jilles van Gurp. |
bayard |
 |
Added serialVersionUID fields for "CompositeCollection", "CompositeSet",
"EmptyMapMutator", "EmptySetMutator". Fixes COLLECTIONS-327. Thanks to sebb. |
brentworden |
 |
Fields transformer and decorated in class "TransformingComparator" are now final. Fixes COLLECTIONS-324. Thanks to sebb. |
tn |
 |
Changed behavior of "CaseInsensitiveMap" constructor to be compliant with "HashMap"
in case the initial capacity is set to zero. Fixes COLLECTIONS-323. Thanks to Maarten Brak. |
jochen |
 |
Added NodeListIterator and convenience methods in IteratorUtils to iterate over
an org.w3c.dom.NodeList. Fixes COLLECTIONS-322. Thanks to Thomas Vahrst. |
tn |
 |
Improved performance of "StaticBucketMap#putAll(Map)" by iterating over the entry set. Fixes COLLECTIONS-320. Thanks to sebb. |
bayard |
 |
Avoid redundant null check in "IteratorUtils#getIterator(Object)". Fixes COLLECTIONS-319. Thanks to sebb. |
bayard |
 |
Use a private method to populate the object in "AbstractHashedMap(Map)". Fixes COLLECTIONS-317. Thanks to sebb. |
bayard |
 |
Fixed Javadoc of "LRUMap" wrt to the maxSize parameter of the constructor. Fixes COLLECTIONS-316. Thanks to ori. |
bayard |
 |
Added new abstract class "CatchAndRethrowClosure" that re-throws any checked exception
as unchecked "FunctorException". Fixes COLLECTIONS-313. Thanks to David J. M. Karlsen. |
brentworden |
 |
Use of final keyword where applicable, minor performance improvements by properly
initializing the capacity of newly created collections when known in advance. Fixes COLLECTIONS-312. Thanks to Peter Lawrey, Gary Gregory. |
tn |
 |
"SetUniqueList#subList()" will now return an unmodifiable list as changes to it
may invalidate the parent list. Fixes COLLECTIONS-307. Thanks to Christian Semrau, Thomas Vahrst. |
tn |
 |
"SetUniqueList#subList()#contains(Object)" will now correctly check the subList
rather than the parent list. Fixes COLLECTIONS-307. Thanks to Christian Semrau. |
bayard |
 |
Added method "CollectionUtils#subtract(Iterable, Iterable, Predicate)". Fixes COLLECTIONS-306. Thanks to Chris Shayan. |
brentworden |
 |
"SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. Fixes COLLECTIONS-304. Thanks to Rafał Figas, Bjorn Townsend. |
bayard |
 |
Improved Javadoc for "Unmodifiable*" classes wrt behavior when the user tries
to modify the collection. Fixes COLLECTIONS-303. Thanks to Emmanuel Bourg. |
bayard |
 |
Calling "CollectionUtils#sizeIsEmpty(null)" will now return true. Fixes COLLECTIONS-298. Thanks to Benjamin Bentmann. |
bayard |
 |
Added methods "CollectionUtils#collate(...)" to merge two sorted Collections
into a sorted List using the standard O(n) merge algorithm. Fixes COLLECTIONS-296. Thanks to Julius Davies. |
tn |
 |
"CaseInsensitiveMap" will now convert input strings to lower-case in a
locale-independent manner. Fixes COLLECTIONS-294. Thanks to Benjamin Bentmann. |
bayard |
 |
Added support for using custom "Equator" objects in "EqualPredicate". Fixes COLLECTIONS-293. Thanks to Stephen Kestle. |
tn |
 |
Added method "CollatingIterator#getIteratorIndex()". Fixes COLLECTIONS-289. Thanks to Fredrik Kjellberg. |
bayard |
 |
Fixed Javadoc for "ListUtils#transformedList(List)" to clarify that existing objects
in the list are not transformed. Fixes COLLECTIONS-256,COLLECTIONS-288. Thanks to Paul Benedict. |
bayard |
 |
Added method "CollectionUtils#extractSingleton(Collection)". Fixes COLLECTIONS-286. Thanks to Geoffrey De Smet. |
mbenson |
 |
Added serialization support for "TreeBidiMap". Fixes COLLECTIONS-285. Thanks to Christian Gruenberg. |
tn |
 |
The predicate that rejected an object to be added to a "PredicatedCollection"
is now contained in the respective exception message. Fixes COLLECTIONS-280. Thanks to Chris Lewis. |
bayard |
 |
Added "IndexedCollection" collection decorator which provides a map-like
view on an existing collection. Fixes COLLECTIONS-275. Thanks to Stephen Kestle. |
tn |
 |
Added serialization support for "FixedOrderComparator" and "TransformingComparator". Fixes COLLECTIONS-272. Thanks to Chaitanya Mutyala. |
tn |
 |
"MultiKey" will now be correctly serialized/de-serialized. Fixes COLLECTIONS-266. Thanks to Joerg Schaible. |
bayard |
 |
"TreeBag" will now only accept "Comparable" objects as input when used with natural ordering. Fixes COLLECTIONS-265. Thanks to David Saff. |
bayard |
 |
Added methods "MapUtils#populateMap(MultiMap, ...)" to support also "MultiMap" instances
as input. Fixes COLLECTIONS-263. Thanks to John Hunsley. |
tn |
 |
Fixed Javadoc for methods "firstKey()" and "lastKey()" in class "AbstractLinkedMap". Fixes COLLECTIONS-262. Thanks to Lisen Mu. |
bayard |
 |
"Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
if the size of the map is less or equal 3. Fixes COLLECTIONS-261. Thanks to ori. |
bayard |
 |
Added constructor "TransformingComparator(Transformer)". Fixes COLLECTIONS-260. Thanks to Stephen Kestle. |
mbenson |
 |
Added "DualLinkedHashBidiMap" bidi map implementation. Fixes COLLECTIONS-258. Thanks to Nathan Blomquist. |
tn |
 |
Removed unused variables in "TreeBidiMap". Fixes COLLECTIONS-255. Thanks to Henri Yandell. |
mbenson |
 |
The static factory methods have been renamed from "getInstance()" to a camel-case
version of the class name, e.g. "truePredicate()" for class "TruePredicate". Fixes COLLECTIONS-251,COLLECTIONS-321. Thanks to Stephen Kestle. |
mbenson |
 |
"SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
provided index. Fixes COLLECTIONS-249. Thanks to Joe Kelly. |
bayard |
 |
Added "Equator" interface. Fixes COLLECTIONS-242. |
skestle |
 |
Added "PassiveExpiringMap" map decorator. Fixes COLLECTIONS-241. Thanks to Elifarley Callado Coelho. |
brentworden |
 |
"MultiValueMap" is now serializable. Fixes COLLECTIONS-240. Thanks to Wouter de Vaal. |
bayard |
 |
Added method "MultiValueMap#iterator()" to return a flattened version of
"entrySet().iterator()". Clarified Javadoc for "entrySet()" that the returned Entry
objects are unflattened, i.e. the Entry object for a given key contains all values
mapped to this key. Fixes COLLECTIONS-237. Thanks to Nils Kaiser, Alan Mehlo. |
tn |
 |
Added method "ListUtils#indexOf(List, Predicate)". Fixes COLLECTIONS-235. Thanks to Nathan Egge. |
bayard |
 |
Fixed several unit tests which were using parameters to "assertEquals(...)" in wrong order. Fixes COLLECTIONS-232. Thanks to Mark Hindess. |
bayard |
 |
Return concrete class in static factory methods instead of base class interface
(except for Unmodifiable decorators). Fixes COLLECTIONS-231. Thanks to Torsten Curdt. |
tn |
 |
"CollectionUtils#size(Collection)" now returns 0 when called with null as input. Fixes COLLECTIONS-230,COLLECTIONS-297,COLLECTIONS-318. Thanks to Stepan Koltsov, sebb. |
bayard |
 |
Removed deprecated classes and methods. Fixes COLLECTIONS-229. |
scolebourne |
 |
"MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
now correctly return if the map has changed by this operation. Fixes COLLECTIONS-228. |
scolebourne |
 |
Added method "ListOrderedMap#putAll(int, Map)". Fixes COLLECTIONS-226. Thanks to Vasily Ivanov. |
bayard |
 |
Added new "Trie" interface with a first concrete implementation "PatriciaTrie"
together with decorators "Unmodifiable" and "Synchronized". Fixes COLLECTIONS-225. Thanks to Sam Berlin, Roger Kapsi. |
tn |
 |
"CollectionUtils#addAll(...)" methods now return if the collection has been changed
by this operation. Fixes COLLECTIONS-223. Thanks to Vasily Ivanov. |
bayard |
 |
"CompositeCollection", "CompositeMap" and "CompositeSet" are now serializable. Fixes COLLECTIONS-221. Thanks to Pal Denes. |
bayard |
 |
"CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". Fixes COLLECTIONS-219. Thanks to Tom Leccese. |
scolebourne |
 |
The "CollectionUtils#select(Collection, Predicate, Collection)" method will now
return the output collection. Fixes COLLECTIONS-218. |
skestle |
 |
Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now
correctly set the value for the current entry. Fixes COLLECTIONS-217. Thanks to Matt Bishop. |
scolebourne |
 |
"MultiKey#toString()" will now use "Arrays#toString(List)". Fixes COLLECTIONS-216. Thanks to Hendrik Maryns. |
scolebourne |
 |
Added support for resettable iterators in "IteratorIterable". Fixes COLLECTIONS-213. Thanks to Dusan Chromy. |
brentworden |
 |
Added methods "MapUtils#populateMap(Map, Iterable, Transformer, ...)". Fixes COLLECTIONS-194. Thanks to Dave Meikle. |
bayard |
 |
"CollectionUtils#forAllDo(Collection, Closure)" now returns the provided closure. Fixes COLLECTIONS-182. Thanks to Jim Cakalic. |
mbenson |
 |
Make generic versions of all classes in collections. Fixes COLLECTIONS-110,COLLECTIONS-243,COLLECTIONS-245,COLLECTIONS-247, COLLECTIONS-253,COLLECTIONS-273,COLLECTIONS-282. |
multiple |
 |
Added class "ComparatorPredicate". Fixes COLLECTIONS-8. Thanks to Rune Peter Bjørnstad. |
brentworden |
Release 3.2.2 – 2015-11-15
| Type |
Changes |
By |
 |
Serialization support for unsafe classes in the functor package is disabled
by default as this can be exploited for remote code execution attacks.
To re-enable the feature the system property "org.apache.commons.collections.enableUnsafeSerialization"
needs to be set to "true".
Classes considered to be unsafe are: CloneTransformer, ForClosure, InstantiateFactory,
InstantiateTransformer, InvokerTransformer, PrototypeCloneFactory,
PrototypeSerializationFactory, WhileClosure. Fixes COLLECTIONS-580. |
tn |
 |
"ExtendedProperties" will now use a privileged action to access the
"file.separator" system property. In case the class does not have
permission to read system properties, the "File#separator" field will
be used instead. Fixes COLLECTIONS-538. Thanks to Trejkaz. |
tn |
 |
Tree traversal with a TreeListIterator will not be affected anymore by
the removal of an element directly after a call to previous(). Fixes COLLECTIONS-447. Thanks to Jeffrey Barnes. |
tn |
 |
SetUniqueList.set(int, Object) now works correctly if the object to be inserted
is already placed at the given position. Fixes COLLECTIONS-444. Thanks to Thomas Vahrst, John Vasileff. |
tn |
 |
Removed debug output in "MapUtils#getNumber(Map)". Fixes COLLECTIONS-350. Thanks to Michael Akerman. |
bayard |
 |
Fixed cache assignment for "TreeBidiMap#entrySet". Fixes COLLECTIONS-335. Thanks to sebb. |
jochen |
 |
Synchronized access to lock in "StaticBucketMap#size()". Fixes COLLECTIONS-334. Thanks to sebb. |
jochen |
 |
"SetUniqueList#subList()#contains(Object)" will now correctly check the subList
rather than the parent list. Fixes COLLECTIONS-307. Thanks to Christian Semrau. |
bayard |
 |
"SetUniqueList#set(int, Object)" will now correctly enforce the uniqueness constraint. Fixes COLLECTIONS-304. Thanks to Rafał Figas, Bjorn Townsend. |
bayard |
 |
"CaseInsensitiveMap" will now convert input strings to lower-case in a
locale-independent manner. Fixes COLLECTIONS-294. Thanks to Benjamin Bentmann. |
bayard |
 |
"MultiKey" will now be correctly serialized/de-serialized. Fixes COLLECTIONS-266. Thanks to Joerg Schaible. |
bayard |
 |
"Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
if the size of the map is less or equal 3. Fixes COLLECTIONS-261. Thanks to ori. |
bayard |
 |
"SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
provided index. Fixes COLLECTIONS-249. Thanks to Joe Kelly. |
bayard |
 |
"MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
now correctly return if the map has changed by this operation. Fixes COLLECTIONS-228. |
scolebourne |
 |
"CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". Fixes COLLECTIONS-219. Thanks to Tom Leccese. |
scolebourne |
 |
Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now
correctly set the value for the current entry. Fixes COLLECTIONS-217. Thanks to Matt Bishop. |
scolebourne |
|