org.apache.commons.collections
public abstract class DefaultMapBag extends java.lang.Object implements Bag
Bag
interface to minimize the effort required for target implementations.
Subclasses need only to call setMap(Map)
in their constructor
specifying a map instance that will be used to store the contents of
the bag.The map will be used to map bag elements to a number; the number represents the number of occurrences of that element in the bag.
Constructor and Description |
---|
DefaultMapBag()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(java.lang.Object o)
Adds a new element to the bag by incrementing its count in the
underlying map.
|
boolean |
add(java.lang.Object o,
int i)
Adds a new element to the bag by incrementing its count in the map.
|
boolean |
addAll(java.util.Collection c)
Invokes
add(Object) for each element in the given collection. |
protected int |
calcTotalSize()
Actually walks the bag to make sure the count is correct and
resets the running total
|
void |
clear()
Clears the bag by clearing the underlying map.
|
boolean |
contains(java.lang.Object o)
Determines if the bag contains the given element by checking if the
underlying map contains the element as a key.
|
boolean |
containsAll(Bag other)
Returns
true if the bag contains all elements in
the given collection, respecting cardinality. |
boolean |
containsAll(java.util.Collection c)
(Violation)
Returns
true if the bag contains all elements in
the given collection, respecting cardinality. |
boolean |
equals(java.lang.Object o)
Returns true if the given object is not null, has the precise type
of this bag, and contains the same number of occurrences of all the
same elements.
|
int |
getCount(java.lang.Object o)
Returns the number of occurrence of the given element in this bag
by looking up its count in the underlying map.
|
protected java.util.Map |
getMap()
Utility method for implementations to access the map that backs
this bag.
|
int |
hashCode()
Returns the hash code of the underlying map.
|
boolean |
isEmpty()
Returns true if the underlying map is empty.
|
java.util.Iterator |
iterator()
Returns an
Iterator over the entire set of members,
including copies due to cardinality. |
boolean |
remove(java.lang.Object o)
(Violation)
Remove all occurrences of the given object from the bag, and do
not represent the object in the
Bag.uniqueSet() . |
boolean |
remove(java.lang.Object o,
int i)
Remove the given number of occurrences from the bag.
|
boolean |
removeAll(java.util.Collection c)
(Violation)
Remove all elements represented in the given collection,
respecting cardinality.
|
boolean |
retainAll(Bag other)
Remove any members of the bag that are not in the given
bag, respecting cardinality.
|
boolean |
retainAll(java.util.Collection c)
Remove any members of the bag that are not in the given
bag, respecting cardinality.
|
protected void |
setMap(java.util.Map m)
Utility method for implementations to set the map that backs
this bag.
|
int |
size()
Returns the number of elements in this bag.
|
java.lang.Object[] |
toArray()
Returns an array of all of this bag's elements.
|
java.lang.Object[] |
toArray(java.lang.Object[] a)
Returns an array of all of this bag's elements.
|
java.lang.String |
toString()
Implement a toString() method suitable for debugging
|
java.util.Set |
uniqueSet()
Returns an unmodifiable view of the underlying map's key set.
|
public DefaultMapBag()
setMap(Map)
in
their constructors.public boolean add(java.lang.Object o)
add
in interface java.util.Collection
add
in interface Bag
true
if the object was not already in the
uniqueSet
Bag.add(Object)
public boolean add(java.lang.Object o, int i)
add
in interface Bag
true
if the object was not already in the
uniqueSet
Bag.add(Object, int)
public boolean addAll(java.util.Collection c)
add(Object)
for each element in the given collection.addAll
in interface java.util.Collection
Collection.addAll(Collection)
protected int calcTotalSize()
public void clear()
clear
in interface java.util.Collection
public boolean contains(java.lang.Object o)
contains
in interface java.util.Collection
public boolean containsAll(Bag other)
true
if the bag contains all elements in
the given collection, respecting cardinality.containsAll(Collection)
public boolean containsAll(java.util.Collection c)
Bag
true
if the bag contains all elements in
the given collection, respecting cardinality. That is, if the
given collection C
contains n
copies
of a given object, calling Bag.getCount(Object)
on that object must
be >= n
for all n
in C
.
The Collection.containsAll(Collection)
method specifies
that cardinality should not be respected; this method should
return true if the bag contains at least one of every object contained
in the given collection. A future version of this method will comply
with that contract.
containsAll
in interface java.util.Collection
containsAll
in interface Bag
public boolean equals(java.lang.Object o)
equals
in interface java.util.Collection
equals
in class java.lang.Object
o
- the object to test for equalitypublic int getCount(java.lang.Object o)
getCount
in interface Bag
Bag.getCount(Object)
protected java.util.Map getMap()
public int hashCode()
hashCode
in interface java.util.Collection
hashCode
in class java.lang.Object
public boolean isEmpty()
isEmpty
in interface java.util.Collection
public java.util.Iterator iterator()
Bag
Iterator
over the entire set of members,
including copies due to cardinality. This iterator is fail-fast
and will not tolerate concurrent modifications.public boolean remove(java.lang.Object o)
Bag
Bag.uniqueSet()
.
According to the Collection.remove(Object)
method,
this method should only remove the first occurrence of the
given object, not all occurrences. A future version of this
method will comply with the contract by only removing one occurrence
of the given object.
remove
in interface java.util.Collection
remove
in interface Bag
true
if this call changed the collectionBag.remove(Object, int)
public boolean remove(java.lang.Object o, int i)
Bag
i
occurrences or less, the item will be
removed from the Bag.uniqueSet()
.remove
in interface Bag
true
if this call changed the collectionBag.getCount(Object)
,
Bag.remove(Object)
public boolean removeAll(java.util.Collection c)
Bag
C
contains n
copies of a given object,
the bag will have n
fewer copies, assuming the bag
had at least n
copies to begin with.
The Collection.removeAll(Collection)
method specifies
that cardinality should not be respected; this method should
remove all occurrences of every object contained in the
given collection. A future version of this method will comply
with that contract.
public boolean retainAll(Bag other)
true
if this call changed the collectionretainAll(Collection)
public boolean retainAll(java.util.Collection c)
protected void setMap(java.util.Map m)
public int size()
public java.lang.Object[] toArray()
toArray
in interface java.util.Collection
public java.lang.Object[] toArray(java.lang.Object[] a)
toArray
in interface java.util.Collection
a
- the array to populatepublic java.lang.String toString()
toString
in class java.lang.Object
Copyright © 2001-2004 Apache Software Foundation. Documenation generated February 26 2016.