Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.ematgine.utils.concurrent
Class CopyOnWriteArraySet  view CopyOnWriteArraySet download CopyOnWriteArraySet.java

java.lang.Object
  extended byjava.util.AbstractCollection
      extended byjava.util.AbstractSet
          extended byorg.ematgine.utils.concurrent.CopyOnWriteArraySet
All Implemented Interfaces:
java.lang.Cloneable, java.util.Collection, java.lang.Iterable, java.io.Serializable, java.util.Set

public class CopyOnWriteArraySet
extends java.util.AbstractSet
implements java.lang.Cloneable, java.io.Serializable

This class implements a java.util.Set that uses a CopyOnWriteArrayList for all of its operations. Thus, it shares the same basic properties:

Sample Usage. Probably the main application of copy-on-write sets are classes that maintain sets of Handler objects that must be multicasted to upon an update command. This is a classic case where you do not want to be holding a synch lock while sending a message, and where traversals normally vastly overwhelm additions.

 class  Handler { void handle(); ... }

 class X {
    private final CopyOnWriteArraySet handlers = new CopyOnWriteArraySet();
    public void addHandler(Handler h) { handlers.add(h); }
   
    private long internalState;
    private synchronized void changeState() { internalState = ...; }
 
    public void update() {
       changeState();
       Iterator it = handlers.iterator();
       while (it.hasNext())
          ((Handler)(it.next()).handle();
    }
 }
 

[ Introduction to this package. ]


Field Summary
protected  CopyOnWriteArrayList al
           
 
Constructor Summary
CopyOnWriteArraySet()
          Constructs an empty set
CopyOnWriteArraySet(java.util.Collection c)
          Constructs a set containing all of the elements of the specified Collection.
 
Method Summary
 boolean add(java.lang.Object o)
          Adds the specified element to the set if it is not already present (optional operation).
 boolean addAll(java.util.Collection c)
          Adds all of the elements of the given collection to this set (optional operation).
 void clear()
          Removes all elements from this set (optional operation).
 boolean contains(java.lang.Object o)
          Returns true if the set contains the specified element.
 boolean containsAll(java.util.Collection c)
          Returns true if this set contains all elements in the specified collection.
 boolean isEmpty()
          Returns true if the set contains no elements.
 java.util.Iterator iterator()
          Returns an iterator over the set.
 boolean remove(java.lang.Object o)
          Removes the specified element from this set (optional operation).
 boolean removeAll(java.util.Collection c)
          Removes from this set all elements in the given collection (optional operation).
 boolean retainAll(java.util.Collection c)
          Retains only the elements in this set that are also in the specified collection (optional operation).
 int size()
          Returns the number of elements in the set.
 java.lang.Object[] toArray()
          Returns an array containing the elements of this set.
 java.lang.Object[] toArray(java.lang.Object[] a)
          Returns an array containing the elements of this set, of the same runtime type of the argument.
 
Methods inherited from class java.util.AbstractSet
equals, hashCode
 
Methods inherited from class java.util.AbstractCollection
toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

al

protected final CopyOnWriteArrayList al
Constructor Detail

CopyOnWriteArraySet

public CopyOnWriteArraySet()
Constructs an empty set


CopyOnWriteArraySet

public CopyOnWriteArraySet(java.util.Collection c)
Constructs a set containing all of the elements of the specified Collection.

Method Detail

size

public int size()
Description copied from interface: java.util.Set
Returns the number of elements in the set. If there are more than Integer.MAX_VALUE mappings, return Integer.MAX_VALUE. This is the cardinality of the set.

Specified by:
size in interface java.util.Set

isEmpty

public boolean isEmpty()
Description copied from interface: java.util.Set
Returns true if the set contains no elements.

Specified by:
isEmpty in interface java.util.Set

contains

public boolean contains(java.lang.Object o)
Description copied from interface: java.util.Set
Returns true if the set contains the specified element. In other words, this looks for o == null ? e == null : o.equals(e).

Specified by:
contains in interface java.util.Set

toArray

public java.lang.Object[] toArray()
Description copied from interface: java.util.Set
Returns an array containing the elements of this set. If the set makes a guarantee about iteration order, the array has the same order. The array is distinct from the set; modifying one does not affect the other.

Specified by:
toArray in interface java.util.Set

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Description copied from interface: java.util.Set
Returns an array containing the elements of this set, of the same runtime type of the argument. If the given set is large enough, it is reused, and null is inserted in the first unused slot. Otherwise, reflection is used to build a new array. If the set makes a guarantee about iteration order, the array has the same order. The array is distinct from the set; modifying one does not affect the other.

Specified by:
toArray in interface java.util.Set

clear

public void clear()
Description copied from interface: java.util.Set
Removes all elements from this set (optional operation). This set will be empty afterwords, unless an exception occurs.

Specified by:
clear in interface java.util.Set

iterator

public java.util.Iterator iterator()
Description copied from interface: java.util.Set
Returns an iterator over the set. The iterator has no specific order, unless further specified.

Specified by:
iterator in interface java.util.Set

remove

public boolean remove(java.lang.Object o)
Description copied from interface: java.util.Set
Removes the specified element from this set (optional operation). If an element e exists, o == null ? e == null : o.equals(e), it is removed from the set.

Specified by:
remove in interface java.util.Set

containsAll

public boolean containsAll(java.util.Collection c)
Description copied from interface: java.util.Set
Returns true if this set contains all elements in the specified collection. If the argument is also a set, this is the subset relationship.

Specified by:
containsAll in interface java.util.Set

addAll

public boolean addAll(java.util.Collection c)
Description copied from interface: java.util.Set
Adds all of the elements of the given collection to this set (optional operation). If the argument is also a Set, this returns the mathematical union of the two. The behavior is unspecified if the set is modified while this is taking place.

Specified by:
addAll in interface java.util.Set

removeAll

public boolean removeAll(java.util.Collection c)
Description copied from class: java.util.AbstractSet
Removes from this set all elements in the given collection (optional operation). This implementation uses size() to determine the smaller collection. Then, if this set is smaller, it iterates over the set, calling Iterator.remove if the collection contains the element. If this set is larger, it iterates over the collection, calling Set.remove for all elements in the collection. Note that this operation will fail if a remove methods is not supported.

Specified by:
removeAll in interface java.util.Set

retainAll

public boolean retainAll(java.util.Collection c)
Description copied from interface: java.util.Set
Retains only the elements in this set that are also in the specified collection (optional operation). If the argument is also a set, this performs the intersection of the two sets.

Specified by:
retainAll in interface java.util.Set

add

public boolean add(java.lang.Object o)
Description copied from interface: java.util.Set
Adds the specified element to the set if it is not already present (optional operation). In particular, the comparison algorithm is o == null ? e == null : o.equals(e). Sets need not permit all values, and may document what exceptions will be thrown if a value is not permitted.

Specified by:
add in interface java.util.Set