Specialized Map to present a
RefDatabase
namespace.
Although not declared as a SortedMap
, iterators from this
map's projections always return references in
RefComparator
ordering. The map's internal
representation is a sorted array of Ref
objects,
which means lookup and replacement is O(log N), while insertion and removal
can be as expensive as O(N + log N) while the list expands or contracts.
Since this is not a general map implementation, all entries must be keyed by
the reference name.
This class is really intended as a helper for RefDatabase
, which
needs to perform a merge-join of three sorted
RefList
s in order to present the unified
namespace of the packed-refs file, the loose refs/ directory tree, and the
resolved form of any symbolic references.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,
V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object, V extends Object> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
containsKey
(Object name) entrySet()
boolean
isEmpty()
toRefMap
(BinaryOperator<Ref> mergeFunction) toString()
Methods inherited from class java.util.AbstractMap
clear, clone, containsValue, equals, hashCode, keySet, putAll, size, values
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
RefMap
public RefMap()Construct an empty map with a small initial capacity. -
RefMap
public RefMap(String prefix, RefList<? extends Ref> packed, RefList<? extends Ref> loose, RefList<? extends Ref> resolved) Construct a map to merge 3 collections together.- Parameters:
prefix
- prefix used to slice the lists down. Only references whose names start with this prefix will appear to reside in the map. Must not be null, use""
(the empty string) to select all list items.packed
- items from the packed reference list, this is the last list searched.loose
- items from the loose reference list, this list overridespacked
if a name appears in both.resolved
- resolved symbolic references. This list overrides the prior listloose
, if an item appears in both. Items in this list must also appear inloose
.
-
-
Method Details
-
containsKey
- Specified by:
containsKey
in interfaceMap<String,
Ref> - Overrides:
containsKey
in classAbstractMap<String,
Ref>
-
get
-
put
-
remove
-
isEmpty
public boolean isEmpty() -
entrySet
-
toString
- Overrides:
toString
in classAbstractMap<String,
Ref>
-
toRefMap
-