There are many features that are missing from the Java Collections API that
should be added to the Java Collections API, including the following:
* Bidirectional iterators for collections other than lists
* New interfaces
* BidiIterator - bidirectional iterator
* extended by ListIterator interface
* has hasPrevious() and previous() methods
* ReverseIterable - reverse iterable
* extends Iterable
* extended by List, Deque, NavigableSet, and BidiIterable
* has descendingIterator() and reverseForEach(Consumer<? super T>)
methods
* BidiIterable - bidirectional iterable
* extends ReverseIterable
* bidiIterator() returns a BidiIterator
* bidiIteratorFromEnd() returns a BidiIterator that is positioned
just past the last element in the collection
* extended by List, BidiIterableCollection, BidiIterableSet,
BidiIterableNavigableSet, and BidiIterableDeque
* BidiIterableCollection - bidirectional iterable collection, extends
BidiIterable and Collection
* extended by List, BidiIterableSet, BidiIterableNavigableSet, and
BidiIterableDeque
* default implementation of bidiIterator() method added to the
java.util.List interface that delegates to java.util.List.listIterator()
* default implementation of bidiIteratorFromEnd() method added to
the java.util.List interface that delegates to
java.util.List.listIterator(size())
* BidiIterableSet - bidirectional iterable set, extends
BidiCollection and Set
* BidiIterableNavigableSet - bidirectional iterable navigable
iterable set, extends BidiIterableSet and NavigableSet
* subSet(), headSet(), and tailSet() all return
BidiIterableNavigableSet instances
* BidiIterableDeque - bidirectional iterable deque, extends
BidiCollection and Deque
* BidiIterableMap - bidirectional iterable map
* extends Map
* keySet() and entrySet() return BidiIterableSet
* values() returns BidiCollection
* has reverseForEach(BiConsumer<? super K, ? super V>) method
* BidiIterableNavigableMap - bidirectional iterable navigable map
* extends BidiIterableMap and NavigableMap
* keySet(), navigableKeySet(), and descendingKeySet() all return
BidiNavigableSet
* entrySet() returns BidiIterableSet
* values() returns BidiCollection
* subMap(), headMap() and tailMap() all return
BidiIterableNavigableMap instances
* BidiIterableDeque interface implemented on java.util.ArrayDeque,
java.util.concurrent.ConcurrentLinkedDeque,
java.util.concurrent.LinkedBlockingDeque, and java.util.LinkedList
* BidiIterableSet interface implemented on java.util.LinkedHashSet,
java.util.TreeSet, and java.util.concurrent.ConcurrentSkipListSet
* BidiIterableNavigableSet interface implemented on java.util.TreeSet
and java.util.concurrent.ConcurrentSkipListSet
* BidiIterableMap interface implemented on java.util.LinkedHashMap,
java.util.TreeMap, and java.util.concurrent.ConcurrentSkipListMap
* BidiIterableNavigableMap interface implemented on java.util.TreeMap
and java.util.concurrent.ConcurrentSkipListMap
* Pollable interface
* Extended by the Queue, Deque, and NavigableSet interfaces
* Also implemented by the java.lang.ref.ReferenceQueue class
* Contains the poll() method, which is already defined by the Queue and
Deque interfaces
* BidiPollable interface
* Extends the Pollable interface
* Extended by the Deque and NavigableSet interfaces
* Contains the pollFirst() and pollLast() methods, which are already
defined in both the Deque and NavigableSet interfaces
* Navigable versions of java.util.EnumMap and java.util.EnumSet
* Option #1: Implement the NavigableMap interface on top of
java.util.EnumMap and java.util.EnumSet
* Option #2: Implement separate java.util.NavigableEnumMap and
java.util.NavigableEnumSet classes that behave similarly to the existing
java.util.EnumMap and java.util.EnumSet classes, except that the
java.util.NavigableEnumMap class has the functionality of the
java.util.NavigableMap interface and that the java.util.NavigableEnumSet class
has the functionality of the java.util.NavigableSet interface.
* Under both options, the comparator() method of the navigable versions
of EnumMap and EnumSet would return null
* Navigable versions of EnumMap and EnumSet are possible since all enum
types implement the Comparable interface
* New enhanced map and set implementations
* Support for hash maps and hash sets with custom hashcode function and
custom equality predicate
* Enhanced map interface that defines a Optional<V> getIfPresent(K key)
method that returns the following:
* A non-empty optional if the key is contained in the map and the
value is non-null
* An empty optional if the key is contained in the map, but the value
is null
* null if the map does not contain key
Will these enhancements ever make it into Java SE 10 or Java SE 11?
*