Package io.usethesource.capsule.core
Class AbstractTrieSetMultimap<K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>>
- java.lang.Object
-
- io.usethesource.capsule.core.AbstractTrieSetMultimap<K,V,C,R>
-
- All Implemented Interfaces:
SetMultimap<K,V>,java.io.Serializable
- Direct Known Subclasses:
AbstractPersistentTrieSetMultimap,AbstractTransientTrieSetMultimap
public abstract class AbstractTrieSetMultimap<K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>> extends java.lang.Object implements SetMultimap<K,V>, java.io.Serializable
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classAbstractTrieSetMultimap.AbstractSetMultimapIterator<K,V,C,R extends MultimapNode<K,V,C,R>>Iterator skeleton that uses a fixed stack in depth.protected static classAbstractTrieSetMultimap.SetMultimapKeyIterator<K,V,C,R extends MultimapNode<K,V,C,R>>protected static classAbstractTrieSetMultimap.SetMultimapNativeTupleIterator<K,V,C,R extends MultimapNode<K,V,C,R>>protected static classAbstractTrieSetMultimap.SetMultimapTupleIterator<K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>,T>protected static classAbstractTrieSetMultimap.SetMultimapValueIterator<K,V,C,R extends MultimapNode<K,V,C,R>>private static classAbstractTrieSetMultimap.TrieSetMultimap_BleedingEdgeNodeIterator<K,V,C,R extends MultimapNode<K,V,C,R>>Iterator that first iterates over inlined-values and then continues depth first recursively.-
Nested classes/interfaces inherited from interface io.usethesource.capsule.SetMultimap
SetMultimap.Immutable<K,V>, SetMultimap.Transient<K,V>
-
-
Field Summary
Fields Modifier and Type Field Description protected EqualityComparator<java.lang.Object>cmpprivate static longserialVersionUID
-
Constructor Summary
Constructors Constructor Description AbstractTrieSetMultimap(EqualityComparator<java.lang.Object> cmp)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private static <K,V>
booleancheckHashCodeAndSize(int targetHash, int targetSize, java.util.Iterator<java.util.Map.Entry<K,V>> iterator)private static <K> booleancheckKeySetHashCodeAndSize(int targetHash, int targetSize, java.util.Iterator<K> iterator)protected abstract CcollectionToInternalFormat(Set.Immutable<V> valueCollection)booleancontainsEntry(java.lang.Object o0, java.lang.Object o1)booleancontainsKey(java.lang.Object o)booleancontainsValue(java.lang.Object o)java.util.Iterator<java.util.Map.Entry<K,V>>entryIterator()java.util.Set<java.util.Map.Entry<K,V>>entrySet()booleanequals(java.lang.Object other)Compares the specified object for equality against this multimap.Set.Immutable<V>get(java.lang.Object o)(package private) abstract intgetCachedKeySetHashCode()(package private) abstract intgetCachedKeySetSize()(package private) abstract intgetCachedSize()protected intgetNodeCount()(package private) abstract RgetRootNode()inthashCode()Returns the hash code for this multimap.protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>>
inthashCode(R rootNode)protected abstract Set.Immutable<V>internalFormatToCollection(C values)java.util.Iterator<K>keyIterator()java.util.Set<K>keySet()protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>>
intkeySetHashCode(R rootNode)protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>>
intkeySetSize(R rootNode)java.util.Iterator<java.util.Map.Entry<K,java.lang.Object>>nativeEntryIterator()Iterates over the raw internal structure.protected java.util.Iterator<R>nodeIterator()protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>>
intsize(R rootNode)java.lang.StringtoString()static inttransformHashCode(int hash)private static <K,V>
inttupleHash(int keyHash, int valueHash)private static <K,V,C extends java.util.Collection<V>>
inttupleHash(int keyHash, C values)private static <K,V>
inttupleHash(int keyHash, V value)private static <K,V,C extends java.util.Collection<V>>
inttupleHash(K key, C values)private static <K,V>
inttupleHash(K key, V value)<T> java.util.Iterator<T>tupleIterator(java.util.function.BiFunction<K,V,T> tupleOf)private java.util.Spliterator<C>valueCollectionsSpliterator(java.util.function.Function<V,C> converter)private java.util.stream.Stream<C>valueCollectionsStream(java.util.function.Function<V,C> converter)abstract java.util.Iterator<V>valueIterator()protected java.util.Iterator<V>valueIterator(java.util.function.Function<V,C> converter)java.util.Collection<V>values()protected abstract Set.Immutable<V>valueToTemporaryBox(V value)-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface io.usethesource.capsule.SetMultimap
isEmpty, size, sizeDistinct, tupleStream
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
cmp
protected final EqualityComparator<java.lang.Object> cmp
-
-
Constructor Detail
-
AbstractTrieSetMultimap
public AbstractTrieSetMultimap(EqualityComparator<java.lang.Object> cmp)
-
-
Method Detail
-
getRootNode
abstract R getRootNode()
-
getCachedSize
abstract int getCachedSize()
-
getCachedKeySetHashCode
abstract int getCachedKeySetHashCode()
-
getCachedKeySetSize
abstract int getCachedKeySetSize()
-
valueToTemporaryBox
protected abstract Set.Immutable<V> valueToTemporaryBox(V value)
-
collectionToInternalFormat
protected abstract C collectionToInternalFormat(Set.Immutable<V> valueCollection)
-
internalFormatToCollection
protected abstract Set.Immutable<V> internalFormatToCollection(C values)
-
tupleHash
private static final <K,V> int tupleHash(int keyHash, int valueHash)
-
tupleHash
private static final <K,V> int tupleHash(int keyHash, V value)
-
tupleHash
private static final <K,V> int tupleHash(K key, V value)
-
tupleHash
private static final <K,V,C extends java.util.Collection<V>> int tupleHash(int keyHash, C values)
-
tupleHash
private static final <K,V,C extends java.util.Collection<V>> int tupleHash(K key, C values)
-
transformHashCode
public static final int transformHashCode(int hash)
-
hashCode
protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>> int hashCode(R rootNode)
-
size
protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>> int size(R rootNode)
-
keySetHashCode
protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>> int keySetHashCode(R rootNode)
-
keySetSize
protected static <K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>> int keySetSize(R rootNode)
-
checkHashCodeAndSize
private static final <K,V> boolean checkHashCodeAndSize(int targetHash, int targetSize, java.util.Iterator<java.util.Map.Entry<K,V>> iterator)
-
checkKeySetHashCodeAndSize
private static final <K> boolean checkKeySetHashCodeAndSize(int targetHash, int targetSize, java.util.Iterator<K> iterator)
-
nodeIterator
protected java.util.Iterator<R> nodeIterator()
-
getNodeCount
protected int getNodeCount()
-
containsKey
public final boolean containsKey(java.lang.Object o)
- Specified by:
containsKeyin interfaceSetMultimap<K,V>
-
containsValue
public final boolean containsValue(java.lang.Object o)
- Specified by:
containsValuein interfaceSetMultimap<K,V>
-
containsEntry
public final boolean containsEntry(java.lang.Object o0, java.lang.Object o1)- Specified by:
containsEntryin interfaceSetMultimap<K,V>
-
get
public final Set.Immutable<V> get(java.lang.Object o)
- Specified by:
getin interfaceSetMultimap<K,V>
-
keyIterator
public java.util.Iterator<K> keyIterator()
- Specified by:
keyIteratorin interfaceSetMultimap<K,V>
-
valueIterator
public abstract java.util.Iterator<V> valueIterator()
- Specified by:
valueIteratorin interfaceSetMultimap<K,V>
-
valueIterator
protected java.util.Iterator<V> valueIterator(java.util.function.Function<V,C> converter)
-
entryIterator
public java.util.Iterator<java.util.Map.Entry<K,V>> entryIterator()
- Specified by:
entryIteratorin interfaceSetMultimap<K,V>
-
nativeEntryIterator
public java.util.Iterator<java.util.Map.Entry<K,java.lang.Object>> nativeEntryIterator()
Description copied from interface:SetMultimapIterates over the raw internal structure. Optional operation.- Specified by:
nativeEntryIteratorin interfaceSetMultimap<K,V>- Returns:
- native iterator, if supported
-
tupleIterator
public <T> java.util.Iterator<T> tupleIterator(java.util.function.BiFunction<K,V,T> tupleOf)
- Specified by:
tupleIteratorin interfaceSetMultimap<K,V>
-
valueCollectionsSpliterator
private java.util.Spliterator<C> valueCollectionsSpliterator(java.util.function.Function<V,C> converter)
-
valueCollectionsStream
private java.util.stream.Stream<C> valueCollectionsStream(java.util.function.Function<V,C> converter)
-
keySet
public final java.util.Set<K> keySet()
- Specified by:
keySetin interfaceSetMultimap<K,V>
-
values
public final java.util.Collection<V> values()
- Specified by:
valuesin interfaceSetMultimap<K,V>
-
entrySet
public final java.util.Set<java.util.Map.Entry<K,V>> entrySet()
- Specified by:
entrySetin interfaceSetMultimap<K,V>
-
hashCode
public int hashCode()
Description copied from interface:SetMultimapReturns the hash code for this multimap. The hash code is defined to equal the hash of aSetview (rather than to equal the hash code ofMap).- Specified by:
hashCodein interfaceSetMultimap<K,V>- Overrides:
hashCodein classjava.lang.Object- Returns:
- the hash code for this multimap
-
equals
public boolean equals(java.lang.Object other)
Description copied from interface:SetMultimapCompares the specified object for equality against this multimap. The notion of equality is equal to theSetview of a multimap, i.e., all key-value pairs have to equal.- Specified by:
equalsin interfaceSetMultimap<K,V>- Overrides:
equalsin classjava.lang.Object- Parameters:
other- the object that is checked for equality against this multimap- Returns:
trueif the specified object is equal to this map
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-