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 class
AbstractTrieSetMultimap.AbstractSetMultimapIterator<K,V,C,R extends MultimapNode<K,V,C,R>>
Iterator skeleton that uses a fixed stack in depth.protected static class
AbstractTrieSetMultimap.SetMultimapKeyIterator<K,V,C,R extends MultimapNode<K,V,C,R>>
protected static class
AbstractTrieSetMultimap.SetMultimapNativeTupleIterator<K,V,C,R extends MultimapNode<K,V,C,R>>
protected static class
AbstractTrieSetMultimap.SetMultimapTupleIterator<K,V,C extends java.lang.Iterable<V>,R extends MultimapNode<K,V,C,R>,T>
protected static class
AbstractTrieSetMultimap.SetMultimapValueIterator<K,V,C,R extends MultimapNode<K,V,C,R>>
private static class
AbstractTrieSetMultimap.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>
cmp
private static long
serialVersionUID
-
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> boolean
checkKeySetHashCodeAndSize(int targetHash, int targetSize, java.util.Iterator<K> iterator)
protected abstract C
collectionToInternalFormat(Set.Immutable<V> valueCollection)
boolean
containsEntry(java.lang.Object o0, java.lang.Object o1)
boolean
containsKey(java.lang.Object o)
boolean
containsValue(java.lang.Object o)
java.util.Iterator<java.util.Map.Entry<K,V>>
entryIterator()
java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
boolean
equals(java.lang.Object other)
Compares the specified object for equality against this multimap.Set.Immutable<V>
get(java.lang.Object o)
(package private) abstract int
getCachedKeySetHashCode()
(package private) abstract int
getCachedKeySetSize()
(package private) abstract int
getCachedSize()
protected int
getNodeCount()
(package private) abstract R
getRootNode()
int
hashCode()
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.String
toString()
static int
transformHashCode(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:
containsKey
in interfaceSetMultimap<K,V>
-
containsValue
public final boolean containsValue(java.lang.Object o)
- Specified by:
containsValue
in interfaceSetMultimap<K,V>
-
containsEntry
public final boolean containsEntry(java.lang.Object o0, java.lang.Object o1)
- Specified by:
containsEntry
in interfaceSetMultimap<K,V>
-
get
public final Set.Immutable<V> get(java.lang.Object o)
- Specified by:
get
in interfaceSetMultimap<K,V>
-
keyIterator
public java.util.Iterator<K> keyIterator()
- Specified by:
keyIterator
in interfaceSetMultimap<K,V>
-
valueIterator
public abstract java.util.Iterator<V> valueIterator()
- Specified by:
valueIterator
in 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:
entryIterator
in interfaceSetMultimap<K,V>
-
nativeEntryIterator
public java.util.Iterator<java.util.Map.Entry<K,java.lang.Object>> nativeEntryIterator()
Description copied from interface:SetMultimap
Iterates over the raw internal structure. Optional operation.- Specified by:
nativeEntryIterator
in 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:
tupleIterator
in 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:
keySet
in interfaceSetMultimap<K,V>
-
values
public final java.util.Collection<V> values()
- Specified by:
values
in interfaceSetMultimap<K,V>
-
entrySet
public final java.util.Set<java.util.Map.Entry<K,V>> entrySet()
- Specified by:
entrySet
in interfaceSetMultimap<K,V>
-
hashCode
public int hashCode()
Description copied from interface:SetMultimap
Returns the hash code for this multimap. The hash code is defined to equal the hash of aSet
view (rather than to equal the hash code ofMap
).- Specified by:
hashCode
in interfaceSetMultimap<K,V>
- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- the hash code for this multimap
-
equals
public boolean equals(java.lang.Object other)
Description copied from interface:SetMultimap
Compares the specified object for equality against this multimap. The notion of equality is equal to theSet
view of a multimap, i.e., all key-value pairs have to equal.- Specified by:
equals
in interfaceSetMultimap<K,V>
- Overrides:
equals
in classjava.lang.Object
- Parameters:
other
- the object that is checked for equality against this multimap- Returns:
true
if the specified object is equal to this map
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-