Class LabeledIntHierarchyMap
java.lang.Object
it.univr.di.labeledvalue.AbstractLabeledIntMap
it.univr.di.labeledvalue.LabeledIntHierarchyMap
- All Implemented Interfaces:
LabeledIntMap
,Serializable
- Direct Known Subclasses:
LabeledIntHierarchyMap.LabeledIntHierarchyMapView
Simple implementation of
LabeledIntMap
interface.
When creating an object it is possible to specify if the labeled values represented into the map should be maintained to the minimal equivalent ones.
- Version:
- $Rev: 851 $
- Author:
- Roberto Posenato
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescription(package private) static class
Simple class to represent a labeled value in the hierarchy.static class
A read-only view of an objectNested classes/interfaces inherited from interface it.univr.di.labeledvalue.LabeledIntMap
LabeledIntMap.LabeledIntMapView
-
Field Summary
Modifier and TypeFieldDescription(package private) LabeledIntHierarchyMap.HierarchyNode
Root of hierarchy Design choice: the set of labeled values of this map is organized as a double linked hierarchy of labeled values.boolean
Just to force the control that, after each put, the format of hierarchy is still valid.Fields inherited from class it.univr.di.labeledvalue.AbstractLabeledIntMap
count, labeledValueRE, labeledValueSetREPattern, optimize, splitterEntryPattern, splitterPair, valueRE, valueREPattern
Fields inherited from interface it.univr.di.labeledvalue.LabeledIntMap
entryComparator
-
Constructor Summary
ConstructorDescriptionNecessary constructor for the factory.Constructor to clone the structure. -
Method Summary
Modifier and TypeMethodDescriptionboolean
alreadyRepresents
(Label newLabel, int newValue) void
clear()
Remove all entries of the map.it.unimi.dsi.fastutil.objects.ObjectSet
<it.unimi.dsi.fastutil.objects.Object2IntMap.Entry<Label>> entrySet()
The set of all entries of the map.int
int
Returns the value associated to thel
if it exists, otherwise the minimal value among all labels consistent withl
.int
Returns the minimal value among those associated to labels subsumed byl
if it exists,Constants.INT_NULL
otherwise.it.unimi.dsi.fastutil.objects.ObjectSet
<Label> keySet()
A copy of all labels in the map.static void
FactorynewInstance
(boolean optimize) FactorynewInstance
(LabeledIntMap lim) FactorynewInstance
(LabeledIntMap lim, boolean optimize) Factoryboolean
Put a label with valuei
if labell
is not null and there is not a labeled value in the set with labell
or it is present but with a value higher thanl
.void
putForcibly
(Label l, int i) Put the labeled value without any control.int
Remove the labell
from the map.int
size()
it.unimi.dsi.fastutil.ints.IntSet
values()
Methods inherited from class it.univr.di.labeledvalue.AbstractLabeledIntMap
entryAsString, entryAsString, equals, hashCode, isEmpty, parse, parse, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface it.univr.di.labeledvalue.LabeledIntMap
getMaxValue, getMaxValueSubsumedBy, getMinLabeledValue, getMinValue, getMinValueAmongLabelsWOUnknown, putAll
-
Field Details
-
wellFormatCheck
public boolean wellFormatCheckJust to force the control that, after each put, the format of hierarchy is still valid. Don't set true in a production program! -
root
Root of hierarchy Design choice: the set of labeled values of this map is organized as a double linked hierarchy of labeled values. A labeled value (label, value) is father of another labeled value (label1, value1) if label1 subsumes label and value1 < value.
-
-
Constructor Details
-
LabeledIntHierarchyMap
LabeledIntHierarchyMap(LabeledIntMap lvm) Constructor to clone the structure.- Parameters:
lvm
- the LabeledValueTreeMap to clone. If lvm is null, this will be an empty map.
-
LabeledIntHierarchyMap
LabeledIntHierarchyMap()Necessary constructor for the factory. The internal structure is built and empty.
-
-
Method Details
-
main
-
alreadyRepresents
- Parameters:
newLabel
- aLabel
object.newValue
- the new value.- Returns:
- true if the current map can represent the value. In positive case, an add of the element does not change the map. If returns false, then the adding of the value to the map would modify the map.
-
clear
public void clear()Description copied from interface:LabeledIntMap
Remove all entries of the map.- See Also:
-
entrySet
public it.unimi.dsi.fastutil.objects.ObjectSet<it.unimi.dsi.fastutil.objects.Object2IntMap.Entry<Label>> entrySet()Description copied from interface:LabeledIntMap
The set of all entries of the map. The set is a view of the map. A modification of the map is reflected on the entries of the returned set.
If it is necessary to scan all the entries to modify the map, the only right way is to consider the keys returned byLabeledIntMap.keySet()
and use methods likeLabeledIntMap.remove(Label)
and/orLabeledIntMap.put(Label, int)
.- Returns:
- The set of all entries of the map.
- See Also:
-
get
- Parameters:
l
- anLabel
object.- Returns:
- the value associated to
l
if it exists,Constants.INT_NULL
otherwise.
-
getMinValueConsistentWith
Description copied from interface:LabeledIntMap
Returns the value associated to thel
if it exists, otherwise the minimal value among all labels consistent withl
.- Parameters:
l
- If it is null,Constants.INT_NULL
is returned.- Returns:
- the value associated to the
l
if it exists or the minimal value among values associated to labels consistent withl
. If no labels are consistent byl
,Constants.INT_NULL
is returned.
-
getMinValueSubsumedBy
Description copied from interface:LabeledIntMap
Returns the minimal value among those associated to labels subsumed byl
if it exists,Constants.INT_NULL
otherwise.- Parameters:
l
- If it is null,Constants.INT_NULL
is returned.- Returns:
- minimal value among those associated to labels subsumed by
l
if it exists,Constants.INT_NULL
otherwise.
-
keySet
Description copied from interface:LabeledIntMap
A copy of all labels in the map.
The returned set must not be connected with the map.
The semantics of this method is different from theMap.keySet()
!
It can costs time and memory because it should duplicate all the keys of the map.
This method allows one to scan all the keys of the map even if during the scan some key of the map are removed.
It is important to modify this map using only methodLabeledIntMap.remove(Label)
.
MethodLabeledIntMap.entrySet()
returns a view of the entries of the map. Therefore, it cannot use to scan the map to modify it.- Returns:
- a copy of all labels in the map.
-
newInstance
-
newInstance
Factory- Parameters:
optimize
- true for having the label shortest as possible, false otherwise. For example, the set {(0, ¬C), (1, C)} is represented as {(0, ⊡), (1, C)} if this parameter is true.- Returns:
- an object of type LabeledIntMap.
-
newInstance
Description copied from interface:LabeledIntMap
Factory- Parameters:
lim
- a map to clone.- Returns:
- an object of type LabeledIntMap.
-
newInstance
Factory- Parameters:
lim
- an object to clone.optimize
- true for having the label shortest as possible, false otherwise. For example, the set {(0, ¬C), (1, C)} is represented as {(0, ⊡), (1, C)} if this parameter is true.- Returns:
- an object of type LabeledIntMap.
-
put
Description copied from interface:LabeledIntMap
Put a label with valuei
if labell
is not null and there is not a labeled value in the set with labell
or it is present but with a value higher thanl
.Not mandatory: the method can remove or modify other labeled values of the set in order to minimize the labeled values present guaranteeing that no info is lost.
- Parameters:
newLabel
- a not null label.newValue
- a notConstants.INT_NULL
value.- Returns:
- true if
(l,i)
has been inserted. Since an insertion can remove more than one redundant labeled values, it is nonsensical to return "the old value" as expected from a classical put method.
-
putForcibly
-
remove
Description copied from interface:LabeledIntMap
Remove the labell
from the map. If thel
is not present, it does nothing.- Parameters:
l
- a not null label.- Returns:
- the previous value associated with
l
, orConstants.INT_NULL
if there was no mapping forl
.
-
size
public int size()- Specified by:
size
in interfaceLabeledIntMap
- Overrides:
size
in classAbstractLabeledIntMap
- Returns:
- the number of labeled value (value with empty label included).
- See Also:
-
unmodifiable
- Returns:
- a read-only view of this.
-
values
public it.unimi.dsi.fastutil.ints.IntSet values()- Returns:
- the set of all integer values present in the map as an ordered list.
-