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()
boolean
containsNonZero(T value)
boolean
containsNonZeroUnsafe(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> boolean
equals(IMemoryView<T> self, java.lang.Object obj)
Provides semantic equality comparison.default void
forEachEntryWithMultiplicities(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.int
getCount(T value)
Returns the number of occurrences of the given value.int
getCountUnsafe(java.lang.Object value)
Returns the number of occurrences of the given value (which may be of any type).static <T> int
hashCode(IMemoryView<T> memory)
Provides semantic hashCode() comparison.boolean
isEmpty()
int
size()
default T
theContainedVersionOf(T value)
Where supported, returns the stored element that is equal to the given value, or null if none.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.
-
-
-
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.
-
-