org.apache.commons.collections
Class DefaultMapBag

java.lang.Object
  |
  +--org.apache.commons.collections.DefaultMapBag
Direct Known Subclasses:
HashBag, TreeBag

public abstract class DefaultMapBag
extends Object
implements Bag

This class provides a skeletal implementation of the 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.

Since:
2.0
Author:
Chuck Burdick, Michael A. Smith

Constructor Summary
DefaultMapBag()
          Constructor.
 
Method Summary
 boolean add(Object o)
          Adds a new element to the bag by incrementing its count in the underlying map.
 boolean add(Object o, int i)
          Adds a new element to the bag by incrementing its count in the map.
 boolean addAll(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(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(Collection c)
          (Violation) Returns true if the bag contains all elements in the given collection, respecting cardinality.
 boolean equals(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(Object o)
          Returns the number of occurrence of the given element in this bag by looking up its count in the underlying map.
protected  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.
 Iterator iterator()
          Returns an Iterator over the entire set of members, including copies due to cardinality.
 boolean remove(Object o)
          (Violation) Remove all occurrences of the given object from the bag, and do not represent the object in the uniqueSet().
 boolean remove(Object o, int i)
          Remove the given number of occurrences from the bag.
 boolean removeAll(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(Collection c)
          Remove any members of the bag that are not in the given bag, respecting cardinality.
protected  void setMap(Map m)
          Utility method for implementations to set the map that backs this bag.
 int size()
          Returns the number of elements in this bag.
 Object[] toArray()
          Returns an array of all of this bag's elements.
 Object[] toArray(Object[] a)
          Returns an array of all of this bag's elements.
 String toString()
          Implement a toString() method suitable for debugging
 Set uniqueSet()
          Returns an unmodifiable view of the underlying map's key set.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DefaultMapBag

public DefaultMapBag()
Constructor. Subclasses should invoke setMap(Map) in their constructors.
Method Detail

add

public boolean add(Object o)
Adds a new element to the bag by incrementing its count in the underlying map.
Specified by:
add in interface Bag
See Also:
Bag.add(Object)

add

public boolean add(Object o,
                   int i)
Adds a new element to the bag by incrementing its count in the map.
Specified by:
add in interface Bag
See Also:
Bag.add(Object, int)

addAll

public boolean addAll(Collection c)
Invokes add(Object) for each element in the given collection.
See Also:
Collection.addAll(Collection)

clear

public void clear()
Clears the bag by clearing the underlying map.

contains

public boolean contains(Object o)
Determines if the bag contains the given element by checking if the underlying map contains the element as a key.
Returns:
true if the bag contains the given element

containsAll

public boolean containsAll(Collection c)
Description copied from interface: Bag
(Violation) Returns 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.

Specified by:
containsAll in interface Bag

containsAll

public boolean containsAll(Bag other)
Returns true if the bag contains all elements in the given collection, respecting cardinality.
See Also:
containsAll(Collection)

equals

public boolean equals(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.
Overrides:
equals in class Object
Parameters:
o - the object to test for equality
Returns:
true if that object equals this bag

hashCode

public int hashCode()
Returns the hash code of the underlying map.
Overrides:
hashCode in class Object
Returns:
the hash code of the underlying map

isEmpty

public boolean isEmpty()
Returns true if the underlying map is empty.
Returns:
true if there are no elements in this bag

iterator

public Iterator iterator()
Description copied from interface: Bag
Returns an Iterator over the entire set of members, including copies due to cardinality. This iterator is fail-fast and will not tolerate concurrent modifications.
Specified by:
iterator in interface Bag

remove

public boolean remove(Object o)
Description copied from interface: Bag
(Violation) Remove all occurrences of the given object from the bag, and do not represent the object in the 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.

Specified by:
remove in interface Bag
Tags copied from interface: Bag
Returns:
true if this call changed the collection
See Also:
Bag.remove(Object, int)

remove

public boolean remove(Object o,
                      int i)
Description copied from interface: Bag
Remove the given number of occurrences from the bag. If the bag contains i occurrences or less, the item will be removed from the Bag.uniqueSet().
Specified by:
remove in interface Bag
Tags copied from interface: Bag
Returns:
true if this call changed the collection
See Also:
Bag.getCount(Object), Bag.remove(Object)

removeAll

public boolean removeAll(Collection c)
Description copied from interface: Bag
(Violation) Remove all elements represented in the given collection, respecting cardinality. That is, if the given collection 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.

Specified by:
removeAll in interface Bag
Tags copied from interface: Bag
Returns:
true if this call changed the collection

retainAll

public boolean retainAll(Collection c)
Remove any members of the bag that are not in the given bag, respecting cardinality.
Specified by:
retainAll in interface Bag
Returns:
true if this call changed the collection

retainAll

public boolean retainAll(Bag other)
Remove any members of the bag that are not in the given bag, respecting cardinality.
Returns:
true if this call changed the collection
See Also:
retainAll(Collection)

toArray

public Object[] toArray()
Returns an array of all of this bag's elements.
Returns:
an array of all of this bag's elements

toArray

public Object[] toArray(Object[] a)
Returns an array of all of this bag's elements.
Parameters:
a - the array to populate
Returns:
an array of all of this bag's elements

getCount

public int getCount(Object o)
Returns the number of occurrence of the given element in this bag by looking up its count in the underlying map.
Specified by:
getCount in interface Bag
See Also:
Bag.getCount(Object)

uniqueSet

public Set uniqueSet()
Returns an unmodifiable view of the underlying map's key set.
Specified by:
uniqueSet in interface Bag
Returns:
the set of unique elements in this bag

size

public int size()
Returns the number of elements in this bag.
Specified by:
size in interface Bag
Returns:
the number of elements in this bag

calcTotalSize

protected int calcTotalSize()
Actually walks the bag to make sure the count is correct and resets the running total

setMap

protected void setMap(Map m)
Utility method for implementations to set the map that backs this bag. Not intended for interactive use outside of subclasses.

getMap

protected Map getMap()
Utility method for implementations to access the map that backs this bag. Not intended for interactive use outside of subclasses.

toString

public String toString()
Implement a toString() method suitable for debugging
Overrides:
toString in class Object


Copyright © 2001-2002 Apache Software Foundation. Documenation generated October 21 2002.