TreeMap#keySet does no copying by only transferring inner Tree to TreeSet #7579
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TreeMap#keySetcurrently will create a new Set which, when modified, will trigger a full deep copy of the map keys into a new Set.Instead, we change TreeSet to have an underlying tree of type
Tree[A, Any]rather thanTree[A, Null], and simply ignore any values stored in theAnys. This essentially turnsTreeMap#keySetinto a no-op.Potential reasons not to allow this
treeMap.iterator.to(TreeSet)Benchmarks!
treeMap.keySet - existingValuetreeMap.keySet + newValuetreeMap.oldKeySet - existingValuetreeMap.oldKeySet + newValue