On Wed, 5 Apr 2023 09:19:57 GMT, Viktor Klang <d...@openjdk.org> wrote:
> Adds overrides for common Map operations to avoid having to allocate the > entrySet for Collectors$Partition maps. Interesting improvement! How about `forEach` and `values`? These look quite easy to implement. @Override public void forEach(BiConsumer<? super Boolean, ? super T> action) { Objects.requireNonNull(action); action.accept(Boolean.FALSE, forFalse); action.accept(Boolean.TRUE, forTrue); } @Override public Collection<T> values() { return List.of(forFalse, forTrue); } Theoretically, it would be possible to simplify `entrySet()` and `keySet()` as well: @Override public Set<Entry<Boolean, T>> entrySet() { return Set.of(new SimpleImmutableEntry<>(false, forFalse), new SimpleImmutableEntry<>(true, forTrue)); } @Override public Set<Boolean> keySet() { return Set.of(false, true); } However, this won't guarantee the order of false and true. On one hand, this order was never guaranteed. On the other hand, it might be nice to have. However, soon we may have a facility to explicitly state that the order is preserved, namely, SequencedMap (PR #7387). If we really want to guarantee the order, probably it would be better to implement SequencedMap here (when PR #7387 will be merged)? Though this may require adding more methods. ------------- PR Comment: https://git.openjdk.org/jdk/pull/13347#issuecomment-1497418841