Class LabeledIntTreeMap
- All Implemented Interfaces:
LabeledIntMap,Serializable
- Direct Known Subclasses:
LabeledIntTreeMap.LabeledIntTreeMapView,LabeledIntTreeSimpleMap
LabeledIntMap interface.
An experimental result on 2024-10-16 showed that using the base, there is a small improvement in the performance.
| Operation | Using Object2IntOpenHashMap (ms) | Using Object2IntArrayMap (ms) |
|---|---|---|
| Creating a map of 26 elements, adding 60 elements (some entries are simplified) | 0.222982625 | 0.08684075 |
| Finding the min value | 0.002990083 | 0.003209583 |
| Retrieve the value of label abd¿f | 3.9083E-5 | 6.6917E-5 |
| Simplification after insertion of (c,11) and (¬c,11) | 0.056917 | 0.020042 |
- Version:
- $Rev: 993 $
- Author:
- Roberto Posenato
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA read-only view of an objectNested classes/interfaces inherited from interface it.univr.di.labeledvalue.LabeledIntMap
LabeledIntMap.LabeledIntMapView -
Field Summary
FieldsModifier and TypeFieldDescription(package private) char[]A set of propositions forming a base for the labels of the map.(package private) it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap<it.unimi.dsi.fastutil.objects.Object2IntMap<Label>> Design choice: the set of labeled values of this map is organized as a collection of sets, each containing labels of the same length.Fields inherited from class it.univr.di.labeledvalue.AbstractLabeledIntMap
count, labeledValueRE, labeledValueSetREPattern, optimize, splitterEntryPattern, splitterPair, valueRE, valueREPatternFields inherited from interface it.univr.di.labeledvalue.LabeledIntMap
entryComparator -
Constructor Summary
ConstructorsConstructorDescriptionNecessary constructor for the factory.LabeledIntTreeMap(boolean optimize) Necessary constructor for the factory.Constructor to clone the structure.LabeledIntTreeMap(LabeledIntMap lvm, boolean optimize) Constructor to clone the structure. -
Method Summary
Modifier and TypeMethodDescriptionbooleanalreadyRepresents(Label newLabel, int newValue) voidclear()Remove all entries from the map.it.unimi.dsi.fastutil.objects.ObjectSet<it.unimi.dsi.fastutil.objects.Object2IntMap.Entry<Label>> entrySet()The set of all map entries.intintintintReturns the minimal value among those associated with labels subsumed bylif it exists,Constants.INT_NULLotherwise.it.unimi.dsi.fastutil.objects.ObjectSet<Label> keySet()A copy of all labels in the map.FactorynewInstance(boolean optimize) FactorynewInstance(LabeledIntMap lim) FactorynewInstance(LabeledIntMap lim, boolean optimize) FactorybooleanPut a label with valueiif labellis not null and there is no labeled value in the set with labell, or it is present but with a value higher thanl.voidputForcibly(Label l, int i) Put the labeled value without any control.intRemove the labellfrom the map.it.unimi.dsi.fastutil.ints.IntSetvalues()Methods inherited from class it.univr.di.labeledvalue.AbstractLabeledIntMap
entryAsString, entryAsString, equals, hashCode, isEmpty, parse, parse, size, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface it.univr.di.labeledvalue.LabeledIntMap
getMaxValueSubsumedBy, getMinLabeledValue, getMinValueAmongLabelsWOUnknown, getMinValueConsistentWith, putAll
-
Field Details
-
base
char[] baseA set of propositions forming a base for the labels of the map. -
mainInt2SetMap
it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap<it.unimi.dsi.fastutil.objects.Object2IntMap<Label>> mainInt2SetMapDesign choice: the set of labeled values of this map is organized as a collection of sets, each containing labels of the same length. This allows the label minimization task to be performed more systematically and efficiently. The efficiency has been proved by comparing this implementation with one in which the map has been realized with a standard map, and the minimization task determines the same length labels every time it needs them.
-
-
Constructor Details
-
LabeledIntTreeMap
LabeledIntTreeMap(LabeledIntMap lvm, boolean optimize) Constructor to clone the structure. For optimization issues, this method clones only the LabeledIntTreeMap object.- Parameters:
lvm- the LabeledValueTreeMap to clone. If LVM is null, this will be an empty map.optimize- true for having the label as short as possible, false otherwise. For example, the set {(0, ¬C), (1, C)} is represented as {(0, ⊡), (1, C)} if this parameter is true.
-
LabeledIntTreeMap
LabeledIntTreeMap(LabeledIntMap lvm) Constructor to clone the structure. For optimization issues, this method clones only the LabeledIntTreeMap object.- Parameters:
lvm- the LabeledValueTreeMap to clone. If LVM is null, this will be an empty map.
-
LabeledIntTreeMap
LabeledIntTreeMap(boolean optimize) Necessary constructor for the factory. The internal structure is built and empty.- Parameters:
optimize- true for having the label as short as possible, false otherwise. For example, the set {(0, ¬C), (1, C)} is represented as {(0, ⊡), (1, C)} if this parameter is true.
-
LabeledIntTreeMap
LabeledIntTreeMap()Necessary constructor for the factory. The internal structure is built and empty.
-
-
Method Details
-
alreadyRepresents
- Parameters:
newLabel- aLabelobject.newValue- the new value.- Returns:
- true if the current map can represent the value. In a positive case, the addition of the element does not change the map. If it returns false, then adding the value to the map would modify the map.
-
clear
public void clear()Description copied from interface:LabeledIntMapRemove all entries from the map.- See Also:
-
entrySet
public it.unimi.dsi.fastutil.objects.ObjectSet<it.unimi.dsi.fastutil.objects.Object2IntMap.Entry<Label>> entrySet()The set of all map entries. The set is a view of the map. A modification of the map is reflected in 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).
Up to 1000 items in the map, it is better to use this method instead ofkeySet()andget(Label).
With 1000 or more items, it is better to usekeySet()approach.- Returns:
- The set of all map entries.
- See Also:
-
get
- Parameters:
l- anLabelobject.- Returns:
- the value associated to
lif it exists,Constants.INT_NULLotherwise.
-
getMaxValue
public int getMaxValue()- Returns:
- the maximum int value present in the set if the set is not empty;
Constants.INT_NULLotherwise.
-
getMinValue
public int getMinValue()- Returns:
- the minimum int value present in the set if the set is not empty;
Constants.INT_NULLotherwise.
-
getMinValueSubsumedBy
Description copied from interface:LabeledIntMapReturns the minimal value among those associated with labels subsumed bylif it exists,Constants.INT_NULLotherwise.- Parameters:
l- If it is null,Constants.INT_NULLis returned.- Returns:
- minimal value among those associated with labels subsumed by
lif it exists,Constants.INT_NULLotherwise.
-
keySet
Description copied from interface:LabeledIntMapA copy of all labels in the map.The returned set must not be connected to the map.
The semantics of this method is different from the
Map.keySet()!It can cost time and memory because it duplicates 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 is removed.
It is important to modify this map using only the method
LabeledIntMap.remove(Label).Method
LabeledIntMap.entrySet()returns a view of the entries of the map. Therefore, it cannot be used to scan or modify the map.- Returns:
- a copy of all labels in the map.
-
newInstance
Description copied from interface:LabeledIntMapFactory- Returns:
- an object of type LabeledIntMap.
-
newInstance
Description copied from interface:LabeledIntMapFactory- Parameters:
optimize- true for having the label as short 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:LabeledIntMapFactory- Parameters:
lim- a map to clone.- Returns:
- an object of type LabeledIntMap.
-
newInstance
Description copied from interface:LabeledIntMapFactory- Parameters:
lim- a map to clone.optimize- true for having the label as short 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
Put a label with valueiif labellis not null and there is no 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 to minimize the labeled values present, guaranteeing that no info is lost.
IMPORTANT!
This implementation tries to eliminate all redundant labels. Moreover, the code is sometimes redundant, but simple to check!- Parameters:
newLabel- a non-null label.newValue- a notConstants.INT_NULLvalue.- Returns:
- true if
(l,i)has been inserted. Since an insertion can remove more than one redundant labeled value, it is nonsensical to return "the old value" as expected from a classical put method.
-
putForcibly
Description copied from interface:LabeledIntMapPut the labeled value without any control. It is dangerous, but it can help in some cases.- Parameters:
l- aLabelobject.i- the new value. If it is Constants#INT_NULL, the method does nothing.
-
remove
Remove the labellfrom the map. If thelis not present, it does nothing.Warning!
Use this method not during a map scan byentrySet()!- Parameters:
l- a non-null label.- Returns:
- the previous value associated with
l, orConstants.INT_NULLif there was no mapping forl.
-
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.
-