Hi John, I'm not sure about most of the suggestions you've made, especially the Bidi* ones, but I understand that something like your suggestion for an enhanced `Optional<V> getIfPresent(K key)` is (or was) being investigated by Mr. Goetz himself and other people over at Project Valhalla <http://openjdk.java.net/projects/valhalla/>. However, I can't seem to find the archived email where it was announced...
Kind regards, Jonathan On 29 November 2016 at 20:13, John Platts <john_pla...@hotmail.com> wrote: > 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? > > * >