Interface IMemoryView<T>
-
- All Superinterfaces:
java.lang.Iterable<T>
- All Known Subinterfaces:
IDeltaBag<T>,IMemory<T>,IMultiset<T>,ISetMemory<T>,MarkedMemory<Value>,MarkedMemory.MarkedDeltaBag<Value>,MarkedMemory.MarkedMultiset<Value>,MarkedMemory.MarkedSet<Value>
- All Known Implementing Classes:
EclipseCollectionsBagMemory,EclipseCollectionsDeltaBag,EclipseCollectionsLongMultiset,EclipseCollectionsLongSetMemory,EclipseCollectionsMultiset,EclipseCollectionsSetMemory,EmptyMemory,MapBackedMemoryView,SingletonMemoryView
public interface IMemoryView<T> extends java.lang.Iterable<T>A read-only view on a memory containing a positive or negative number of equal() copies for some values. During iterations, each distinct value is iterated only once.See
IMemory.Implementors must provide semantic (not identity-based) hashCode() and equals() using the static helpers
hashCode(IMemoryView)andequals(IMemoryView, Object)here.- Since:
- 2.0
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default java.util.Map<T,java.lang.Integer>asMap()For compatibility with legacy code relying on element-to-integer maps.default java.util.stream.Stream<T>asStream()booleancontainsNonZero(T value)booleancontainsNonZeroUnsafe(java.lang.Object value)java.util.Set<T>distinctValues()The set of distinct valuesdefault java.lang.Iterable<java.util.Map.Entry<T,java.lang.Integer>>entriesWithMultiplicities()static <T> booleanequals(IMemoryView<T> self, java.lang.Object obj)Provides semantic equality comparison.default voidforEachEntryWithMultiplicities(java.util.function.BiConsumer<T,java.lang.Integer> entryConsumer)Process contained values with their multiplicitiesstatic <T> IMemoryView<T>fromMap(java.util.Map<T,java.lang.Integer> wrapped)For compatibility with legacy code relying on element-to-integer maps.intgetCount(T value)Returns the number of occurrences of the given value.intgetCountUnsafe(java.lang.Object value)Returns the number of occurrences of the given value (which may be of any type).static <T> inthashCode(IMemoryView<T> memory)Provides semantic hashCode() comparison.booleanisEmpty()intsize()default TtheContainedVersionOf(T value)Where supported, returns the stored element that is equal to the given value, or null if none.default TtheContainedVersionOfUnsafe(java.lang.Object value)Where supported, returns the stored element that is equal to the given value (of any type), or null if none.
-
-
-
Method Detail
-
getCount
int getCount(T value)
Returns the number of occurrences of the given value.- Returns:
- the number of occurrences
-
getCountUnsafe
int getCountUnsafe(java.lang.Object value)
Returns the number of occurrences of the given value (which may be of any type).- Returns:
- the number of occurrences
-
containsNonZero
boolean containsNonZero(T value)
- Returns:
- true if the given value is contained with a nonzero multiplicity
-
containsNonZeroUnsafe
boolean containsNonZeroUnsafe(java.lang.Object value)
- Returns:
- true if the given value (which may be of any type) is contained with a nonzero multiplicity
-
size
int size()
- Returns:
- the number of distinct values
-
isEmpty
boolean isEmpty()
- Returns:
- iff contains at least one value with non-zero occurrences
-
distinctValues
java.util.Set<T> distinctValues()
The set of distinct values
-
theContainedVersionOf
default T theContainedVersionOf(T value)
Where supported, returns the stored element that is equal to the given value, or null if none. Useful for canonicalization in case of non-identity equals().For collections that do not support canonicalization, simply returns the argument if contained, null if none.
- Returns:
- a value equal to the argument if such a value is stored, or null if none
-
theContainedVersionOfUnsafe
default T theContainedVersionOfUnsafe(java.lang.Object value)
Where supported, returns the stored element that is equal to the given value (of any type), or null if none. Useful for canonicalization in case of non-identity equals().For collections that do not support canonicalization, simply returns the argument if contained, null if none.
- Returns:
- a value equal to the argument if such a value is stored, or null if none
-
entriesWithMultiplicities
default java.lang.Iterable<java.util.Map.Entry<T,java.lang.Integer>> entriesWithMultiplicities()
- Returns:
- an unmodifiable view of contained values with their multiplicities
-
forEachEntryWithMultiplicities
default void forEachEntryWithMultiplicities(java.util.function.BiConsumer<T,java.lang.Integer> entryConsumer)
Process contained values with their multiplicities
-
asMap
default java.util.Map<T,java.lang.Integer> asMap()
For compatibility with legacy code relying on element-to-integer maps.- Returns:
- an unmodifiable view of contained values with their multiplicities
-
fromMap
static <T> IMemoryView<T> fromMap(java.util.Map<T,java.lang.Integer> wrapped)
For compatibility with legacy code relying on element-to-integer maps.- Returns:
- an unmodifiable view of contained values with their multiplicities
-
asStream
default java.util.stream.Stream<T> asStream()
- Returns:
- a stream of values, iterable once
- Since:
- 2.1
-
equals
static <T> boolean equals(IMemoryView<T> self, java.lang.Object obj)
Provides semantic equality comparison.
-
hashCode
static <T> int hashCode(IMemoryView<T> memory)
Provides semantic hashCode() comparison.
-
-