Changelog
Release 0.9.22 (2023-12-22)
-
Improved: Brownies-Collections is compatible with Java 21.
The introduction of SequencedCollection make a refactoring of IList necessary.
IList does not implement the Deque interface anymore, but offers asDeque() as replacement.
See https://bugs.openjdk.org/browse/JDK-8266572 for details.
-
Added: IListable as uniform representation of list / array
-
Added: IList.immutableList() allows to easily create an immutable list
-
Improved: Memory consumption of immutable list has been reduced
-
Added: ICollectionTools.flatMap()
-
Added: IList.indexOf(Object, int)
-
Improved: Performance of adding/setting/replacing instances of Collection
Release 0.9.21 (2023-07-22)
-
Bug fix: null was not counted correctly in getCount() / getCountByKey()
-
Bug fix: in KeyList/KeySet removeAllByKey
-
Bug fix: withPrimaryElem()/withUniqueElem()
-
Added: ICollection: copy/crop
-
Added: Manifest has Automatic-Module-Name set and is OSGI aware
Release 0.9.20 (2023-04-24)
-
Bug fix: fix equals() for key collections with duplicate elements
-
Improved: performance of KeyListImpl.put()
-
Improved: remove KeyListImpl.addIf (slow due to exception), use IList.addIfAbsent instead
-
Added: IList map()/filter()/mapFilter()/filterMap()
-
Added: ICollection / ICollectionTools with getFirstOrNull(), getSingleOrNull, countIf(), etc.
Release 0.9.19 (2022-10-28)
-
Bug fix: Key2List.asMap2()
-
Improved: performance of withSetBehavior()
Release 0.9.18 (2022-07-29)
-
Improved: add field GapList.gapAddRight to exploit access pattern
-
Improved: reduced byte code size of methods to allow inlining
-
Improved: harden against overflow on growing
Release 0.9.17 (2022-04-27)
-
Bug fix: BigList.parallelStream()
-
Bug fix: Key collection removing an element with a null key
-
Bug fix: KeyLists were not completely immutable after unmodifiableList
-
Bug fix: CollectionAsSet: equals/hashCode
-
Added: IList.crop(), getCountIf(), IList.retain(int, int)
-
Improved: Speed up for withElemCount
Release 0.9.16 (2021-10-19)
-
Changed: groupId of Maven coordinates:
New: org.magicwerk.brownies:brownies-collections:0.9.16
Old: org.magicwerk:brownies-collections:0.9.15
Release 0.9.15 (2021-10-07)
-
Changed: IList: getIf() returns only one element, use filteredList() for several
-
Changed: IList: improve performance of remove(int,int) for special cases
-
Changed: IList: if a list is already unmodifiable, it is returned unchanged by unmodifiableList/copy
-
Bug fix: Fix iterator in KeyLists
-
Bug fix: Fix KeyList.initAll() if list is sorted but input not
-
Bug fix: Fix IList.equals
-
Bug fix: Fix KeyMap.crop()
-
Bug fix: Fix KeyCollectionImpl.KeyMap.containsValue() if collection has no elem map and key map is sorted
-
Added: KeySet, Key1Set, Key2Set
-
Added: GapLists: methods to read data directly from InputStream/Reader into ByteGapList/CharGapList
Release 0.9.14 (2016-09-27)
-
Changed: use Java 8 functional interfaces (use interfaces in java.util.function instead of org.magicwerk.brownies.collections.function)
-
Changed: Improve performance of contains() for key collections if keys are defined
-
Changed: Improve performance of IList.getAll()
-
Changed: Removed IList.getArray() removed, use toArray() instead
-
Bug fix: Fix contains() for key collections several elements had the same key
-
Bug fix: Fix containsIf()
-
Bug fix: Fix toArray() of primitive collections
-
Bug fix: IList.getSingleOrEmpty() for more than 1 value
-
Bug fix: Extending classes with getBuilder() did not work for KeyList, Key2List
-
Added: IList: getAny(), addArray()/setArray() accepting parts of array
-
Added: Key lists: putIfAbsentyByKey, unwrap
Release 0.9.13 (2016-04-14)
-
Bug fix: GapList.doEnsureCapacity()
This bug makes GapList return invalid data in some cases. It is therefore recommended to upgrade to release 0.9.13.
-
Changed: withPrimaryKey()/withUniqueKey() now accept a mapper making calling withKeyMap() unnecesary
-
Changed: added method getAllKey() to key lists / key collection
Release 0.9.12 (2015-11-03)
-
Bug fix: Corrected behavior for put()/putByKey() for KeyLists with duplicates
-
Bug fix: Made behavior of asSet()/asMap1()/asMap2() consistent
-
Bug fix: toArray() if KeyLists were using primitives
-
Bug fix: setAll() on sorted key lists
-
Bug fix: removeAll()/retainAll() now also throw NPE with null argument on empty list
-
Bug fix: improved error checking on sort() for key lists
Release 0.9.11 (2015-09-08)
-
Bug fix: Sharing blocks after copying BigList did not work
-
Bug fix: invalidateKey() failed for sorted key lists
-
Bug fix: removeAll(), replaceAll() for key collections
-
Changed: renamed some builder methods for key collections
Release 0.9.10 (2015-04-24)
-
Bug fix: KeyList's getAllByKey() if list was sorted
Release 0.9.9 (2015-03-03)
-
Added: IList: indexOf(Object, int) / lastIndexOf(Object, int)
-
Added: IList: put() / addIfAbsent()
-
Added: IList: initAll()/initArray()/initMult(), addAll()/addArray()/addMult(), setAll()/setArray()/setMult()
-
Added: IList: putAlll()/putArray()/putMult(), replaceAll()/replaceArray()/replaceMult()
-
Added: IList: transferCopy()/transferMove()/transferRemove()/transferSwap()
-
Bug fix: KeyListImpl.removeAllByKey failed if list was sorted
-
Bug fix: BigList.sort
-
Bug fix: Key collections: clone/copy/crop failed with duplicates
-
Changed: functional interfaces renamed to Java 8 style: IConsumer, IFunction, IPredicate, ISupplier
-
Changed: rename Key1Collection.puByKey1 to putByKey1
Release 0.9.8 (2014-10-28)
-
Bug fix: GapList.doEnsureCapacity()
This bug makes GapList return invalid data in some cases. It is therefore recommended to upgrade to release 0.9.8.
-
Added: BigList
BigList is a list optimized for storing large number of elements.
-
Added: IntBigList, LongBigList, etc.
Specialized versions of BigList storing primitive ints, longs, etc.
-
Added: IntObjBigList, LongObjBigList, etc.
Version of IntBigList, etc. which allow access through the standard List interface.
Release 0.9.7 (2014-08-08)
-
Bug fix: GapList.doEnsureCapacity()
This bug makes GapList return invalid data in some cases. It is therefore recommended to upgrade to release 0.9.7.
-
Added: drag(), addIfAbsent() to GapList
-
Added: addIf() to KeyList
-
Changed: triggers beforeInsert/afterInsert, beforeDelete/afterDelete
-
Bug fix: GapList.rotate()
Release 0.9.6 (2014-03-25)
-
Added: mappedList(), filter() to GapList
-
Added: Key1List.asMap1()
-
Bug fix: for getAll, getCount, getDistinct, removeAll which did not work for key lists without element set
-
Bug fix: for add() with withWindowSize() set
-
Bug fix: for asMap2()
-
Bug fix: wrong type in withKey2Map
-
Bug fix: wrong index in withKey2Sort
Release 0.9.5 (2014-01-24)
-
Bug fix in removeFirst(), removeLast() if empty
-
Bug fix in clone(), copy(), crop()
-
Bug fixes in builders
-
Perfomance improvments for GapList and all KeyCollections/KeyLists
Release 0.9.4 (2013-10-22)
-
Added: Classes KeyCollection, Key1Collection, Key2Collection
-
Added: Classes KeyList, Key1List, Key2List
-
Added: Class IntObjGapList, LongObjGapList, etc. which make IntGapList implementing List interface
-
Change: GapList.get(int, int) has been renamed to GapList.getAll(int, int)
-
Change: Class MaxList has gone, the functionality has been implemented in KeyList
-
Bug fix: GapList.iterator(), GapList().retainAll()
Release 0.9.3 (2013-03-02)
-
Bug fix: init(), resize(), move()
-
Bug fix: IntGapList.equals() (all primitive types)
-
Bug fix: Handling of NaN in DoubleGapList / FloatGapList
-
Added: containsAny()
Release 0.9.2 (2012-07-25)
-
Bug fix: assertion failed in addAll()
-
Bug fix: MaxList did not work properly
-
Bug fix: corrected usage of GapLists as arguments (? extends E)
Release 0.9.1 (2012-07-24)
-
Bug fix: data corruption if the capacity of an empty list was increased
-
Enhancement: New methods getArray(), setAll(), init(), resize(), fill(), unmodifiableList()
-
Internal: protected methods doGet(), doAdd(), doRemove(), doSet(), doReSet(), doModify() provide
clean interface for validation etc.
Release 0.9 (2012-03-12)