C - the class extending MultiSet with elements in E.E - the class of the elements of this collection.abstract static class CollectionsExt.AbstractImmutableMultiSet<C extends MultiSet<E>,E> extends Object implements MultiSet<E>
MultiSet.Multiplicity| Modifier and Type | Field and Description |
|---|---|
private Set<CollectionsExt.Modification> |
mods
The set of allowed modifications.
|
private static long |
serialVersionUID |
| Modifier | Constructor and Description |
|---|---|
private |
AbstractImmutableMultiSet() |
(package private) |
AbstractImmutableMultiSet(Set<CollectionsExt.Modification> mods) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E obj)
Adds
obj to this MultiSet. |
boolean |
addAll(MultiSet<? extends E> mvs)
Adds
mvs elementwise to this multi set
taking multiplicities into account
and returns whether this caused a change
of the underlying set.
**** strange implementation; also: change |
boolean |
addAll(Set<? extends E> set)
Adds
set elementwise to this multi set
increasing multiplicities
and returns whether this caused a change
of the underlying set.
**** strange implementation; also: change |
int |
addWithMult(E obj)
Adds
obj to this MultiSet
and returns the new multiplicity of this object. |
int |
addWithMult(E obj,
int addMult)
Increases the multiplicity of
obj
in this MultiSet
by the specified value addMult
and returns the new multiplicity of this object. |
Set<CollectionsExt.Modification> |
allowedModifications() |
void |
clear()
Removes all of the elements from this
MultiSet. |
boolean |
contains(Object obj)
Returns true if this
MultiSet
contains the specified element. |
boolean |
containsAll(Collection<?> coll)
Returns true if this
MultiSet
contains all of the elements in the specified collection
with strictly positive multiplicity. |
boolean |
equals(Object obj)
Returns
true if and only if obj
is also a MultiSet
and contains the same elements with the same multiplicities
as this one. |
Map<E,MultiSet.Multiplicity> |
getMap()
Returns a view of the underlying map of this
MultiSet
as a map mapping each entry to its multiplicity. |
int |
getMaxMult()
Returns the maximal multiplicity of an element in this set.
|
int |
getMultiplicity(Object obj)
Returns the multiplicity
with which the given object occurs within this set.
|
MultiSet.Multiplicity |
getMultiplicityObj(Object obj)
Returns the multiplicity object of the given object in this set
or
null. |
Object |
getObjWithMaxMult()
Returns one of the elements in this multiple set
with maximal multiplicity.
|
Set<E> |
getSet()
Returns a view of the underlying set of this
MultiSet. |
Set<Map.Entry<E,MultiSet.Multiplicity>> |
getSetWithMults()
Returns a Set view of the mapping
from the element of this
MultiSet
to the according multiplicities. |
int |
hashCode() |
boolean |
isEmpty()
Returns whether this multiple set contains no element.
|
MultiSetIterator<E> |
iterator()
Returns an iterator over the elements in this collection
which emits each element exactly once,
without regarding its multiplicity
|
boolean |
remove(Object obj)
Removes all instances of the specified element from this
MultiSet, if it is present with nontrivial multiplicity. |
boolean |
removeAll(Collection<?> coll)
Removes all this
MultiSet's elements
that are also contained in the specified collection. |
int |
removeWithMult(Object obj)
Decrements the multiplicity of
obj
in this MultiSet if it is present and
returns the old multiplicity of obj;
If this is 0 returns
without altering this MultiSet. |
int |
removeWithMult(Object obj,
int removeMult)
Decreases the multiplicity of
obj
in this MultiSet
by the specified value removeMult if possible
and returns the old multiplicity of obj. |
boolean |
retainAll(Collection<?> coll)
Retains only the elements in this
MultiSet
that are contained in the specified collection. |
int |
setMultiplicity(E obj,
int newMult)
Sets the multiplicity of
obj to the value
specified by mult. |
int |
size()
Returns the number of pairwise different elements
in this
MultiSet. |
int |
sizeWithMult()
Returns the number of elements
in this
MultiSet counted with multiplicities. |
Object[] |
toArray()
Returns an array containing all of the elements
in this
MultiSet exactly once, ignoring its multiplicity |
E[] |
toArray(E[] arr)
Returns an array containing all of the elements
in this
MultiSet;
the runtime type of the returned array is that of the specified array. |
String |
toString() |
abstract C |
unrestricted()
Returns the underlying multiset without the restrictions
imposed by this
CollectionsExt.ImmutableCollection. |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitforEach, spliteratorprivate static final long serialVersionUID
private final Set<CollectionsExt.Modification> mods
private AbstractImmutableMultiSet()
AbstractImmutableMultiSet(Set<CollectionsExt.Modification> mods)
public final Set<CollectionsExt.Modification> allowedModifications()
public abstract C unrestricted()
CollectionsExt.ImmutableCollection.
Note that the result
may still throw UnsupportedOperationExceptions
depending on the implementation.public int size()
MultiSetMultiSet.
If this MultiSet
contains more than Integer.MAX_VALUE elements,
returns Integer.MAX_VALUE.size in interface MultiSet<E>MultiSet
each multiple element counted as a single one.MultiSet.sizeWithMult()public int sizeWithMult()
MultiSetMultiSet counted with multiplicities.
If this MultiSet
contains more than Integer.MAX_VALUE elements,
returns Integer.MAX_VALUE.sizeWithMult in interface MultiSet<E>MultiSet
counted with multiplicities,
provided this does not exceed Integer.MAX_VALUE;
otherwise just Integer.MAX_VALUE.MultiSet.size()public boolean isEmpty()
MultiSetpublic Object getObjWithMaxMult()
MultiSetnull
if and only if this set is empty.getObjWithMaxMult in interface MultiSet<E>Object o != null with maximal multiplicity
or null if this multiple set is empty.MultiSet.isEmpty()public int getMaxMult()
MultiSet0.getMaxMult in interface MultiSet<E>int value
which is the maximal mutliplicity of an element in this set.
In particular this is 0
if and only if this set is empty.public int getMultiplicity(Object obj)
MultiSetgetMultiplicity in interface MultiSet<E>obj - an Object and not null.int value
which is the mutliplicity of the given element in this set.
In particular this is 0 if and only if
obj is an instance which is not in this set.MultiSet.setMultiplicity(Object, int),
MultiSet.getMultiplicityObj(Object)public boolean contains(Object obj)
MultiSetMultiSet
contains the specified element.
More formally, returns true if and only if this
MultiSet contains at least one element e
such that (o==null ? e==null : o.equals(e)).public Object[] toArray()
MultiSetMultiSet exactly once, ignoring its multiplicity.
The returned array will be "safe" in that no references to it
are maintained by this MultiSet.
(In other words, this method must allocate a new array
even if this MultiSet is backed by an array).
The caller is thus free to modify the returned array.
toArray in interface MultiSet<E>MultiSet.iterator()public E[] toArray(E[] arr)
MultiSetMultiSet;
the runtime type of the returned array is that of the specified array.
If the MultiSet fits in the specified array,
it is returned therein.
Otherwise, a new array is allocated with the runtime type
of the specified array and the size of this MultiSet.
If this MultiSet fits in the specified array
with room to spare
(i.e., the array has more elements than this MultiSet),
the elementin the array
immediately following the end of the MultiSet
is set to null.
This is useful in determining the length of this
MultiSet because this MultiSet does
not contain any null elements.
Suppose l is a List known to contain only strings. The following code can be used to dump the list into a newly allocated array of String:
String[] x = (String[]) v.toArray(new String[0]);
Note that toArray(new Object[0]) is identical in function to toArray().
toArray in interface MultiSet<E>arr - the array into which the elements of this MultiSet
are to be stored, if it is big enough;
otherwise, a new array of the same runtime type
is allocated for this purpose.MultiSet
exactly once.public MultiSet.Multiplicity getMultiplicityObj(Object obj)
MultiSetnull.getMultiplicityObj in interface MultiSet<E>obj - an Object and not null.obj is an instance which is in this set,
a multiplicity object wrapping the multiplicity is returned.
If obj is an instance which is not in this set,
null is returned.MultiSet.getMultiplicity(Object)public MultiSetIterator<E> iterator()
MultiSetpublic int addWithMult(E obj)
MultiSetobj to this MultiSet
and returns the new multiplicity of this object.
In other words, increments the multiplicity of obj by one.
This is a special case of MultiSet.addWithMult(Object obj, int addMult)
with addMult==1.addWithMult in interface MultiSet<E>obj - a Object.
Note that this object may not be null.int value:
the new multiplicity of obj.public int addWithMult(E obj, int addMult)
MultiSetobj
in this MultiSet
by the specified value addMult
and returns the new multiplicity of this object.
This generalizes MultiSet.addWithMult(Object obj)
with addMult==1.addWithMult in interface MultiSet<E>obj - an Object instance.addMult - a non-negative integer specifying the multiplicity
with which obj is to be added.int value:
the new multiplicity of obj.public boolean add(E obj)
MultiSetobj to this MultiSet.
In other words, increments the multiplicity of obj by one.
Returns true if this MultiSet
interpreted as a set changed as a result of the call.
(Returns false if this MultiSet
already contains the specified element (with nontrivial multiplicity).
public int removeWithMult(Object obj)
MultiSetobj
in this MultiSet if it is present and
returns the old multiplicity of obj;
If this is 0 returns
without altering this MultiSet.removeWithMult in interface MultiSet<E>obj - a Object.
Note that this object may not be null.int value:
the old multiplicity of obj
before a potential modification of this MultiSet.public int removeWithMult(Object obj, int removeMult)
MultiSetobj
in this MultiSet
by the specified value removeMult if possible
and returns the old multiplicity of obj.removeWithMult in interface MultiSet<E>obj - an Object instance.removeMult - a non-negative integer specifying the multiplicity
with which obj is to be removed.int value:
the old multiplicity of obj
before a potential modification of this MultiSet.public boolean remove(Object obj)
MultiSetMultiSet, if it is present with nontrivial multiplicity.
More formally, immediately after having (successively) invoked
s.remove(o),
the condition s.contains(o) == false is satisfied.
Returns true if this MultiSet contained the specified
element (or equivalently, if (the underlying set of)
this MultiSet changed as a result of the call).public int setMultiplicity(E obj, int newMult)
MultiSetobj to the value
specified by mult.setMultiplicity in interface MultiSet<E>obj - an Object instance.newMult - a non-negative int value.obj
as a non-negative int value.MultiSet.getMultiplicity(Object)public boolean containsAll(Collection<?> coll)
MultiSetMultiSet
contains all of the elements in the specified collection
with strictly positive multiplicity.containsAll in interface MultiSet<E>coll - collection to be checked for containment
in this MultiSet.MultiSet
contains all of the elements in the specified collection.MultiSet.contains(Object)public boolean addAll(MultiSet<? extends E> mvs)
MultiSetmvs elementwise to this multi set
taking multiplicities into account
and returns whether this caused a change
of the underlying set.
**** strange implementation; also: changepublic boolean addAll(Set<? extends E> set)
MultiSetset elementwise to this multi set
increasing multiplicities
and returns whether this caused a change
of the underlying set.
**** strange implementation; also: changepublic boolean removeAll(Collection<?> coll)
MultiSetMultiSet's elements
that are also contained in the specified collection.
After this call returns, this MultiSet
will contain no elements in common with the specified collection.removeAll in interface MultiSet<E>coll - elements to be removed from this MultiSet.MultiSet
changed as a result of the call.MultiSet.remove(Object),
MultiSet.contains(Object)public boolean retainAll(Collection<?> coll)
MultiSetMultiSet
that are contained in the specified collection.
In other words, removes from this MultiSet
all of its elements that are not contained
in the specified collection.retainAll in interface MultiSet<E>coll - elements to be retained in this MultiSet.MultiSet changed
as a result of the call.MultiSet.remove(Object),
MultiSet.contains(Object)public void clear()
MultiSetMultiSet.
This MultiSet will be empty after this method returns.public Set<E> getSet()
MultiSetMultiSet.
For certain implementations, this set is immutable
to prevent implicit modification of this MultiSet.public Map<E,MultiSet.Multiplicity> getMap()
MultiSetMultiSet
as a map mapping each entry to its multiplicity.public Set<Map.Entry<E,MultiSet.Multiplicity>> getSetWithMults()
MultiSetMultiSet
to the according multiplicities.
The set is backed by the MultiSet,
so changes to the map are reflected in the set, and vice-versa.
If the MultiSet is modified
while an iteration over the set is in progress
(except through the iterator's own remove operation,
or through the setValue operation on a map entry
returned by the iterator) the results of the iteration are undefined.
The set may support element removal,
which removes the corresponding element from the MultiSet,
via the Iterator.remove(), Set.remove(Object),
Set.removeAll(Collection), Set.retainAll(Collection)
and MultiSet.clear() operations.
It does not support the methods
MultiSet.add(Object) or Set.addAll(Collection).getSetWithMults in interface MultiSet<E>public String toString()
public boolean equals(Object obj)
MultiSettrue if and only if obj
is also a MultiSet
and contains the same elements with the same multiplicities
as this one.Copyright © 2012–2018 Simuline Organization (l2r). All rights reserved.