Colt 1.0.3

edu.oswego.cs.dl.util.concurrent
Class CopyOnWriteArraySet

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractSet
              |
              +--edu.oswego.cs.dl.util.concurrent.CopyOnWriteArraySet
All Implemented Interfaces:
Cloneable, Collection, Serializable, Set

public class CopyOnWriteArraySet
extends AbstractSet
implements Cloneable, 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. ]

See Also:
CopyOnWriteArrayList, Serialized Form

Constructor Summary
CopyOnWriteArraySet()
          Constructs an empty set
CopyOnWriteArraySet(Collection c)
          Constructs a set containing all of the elements of the specified Collection.
 
Method Summary
 boolean add(Object o)
           
 boolean addAll(Collection c)
           
 void clear()
           
 boolean contains(Object o)
           
 boolean containsAll(Collection c)
           
 boolean isEmpty()
           
 Iterator iterator()
           
 boolean remove(Object o)
           
 boolean removeAll(Collection c)
           
 boolean retainAll(Collection c)
           
 int size()
           
 Object[] toArray()
           
 Object[] toArray(Object[] a)
           
 
Methods inherited from class java.util.AbstractSet
equals, hashCode
 
Methods inherited from class java.util.AbstractCollection
toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CopyOnWriteArraySet

public CopyOnWriteArraySet()
Constructs an empty set

CopyOnWriteArraySet

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

size

public int size()
Overrides:
size in class AbstractCollection

isEmpty

public boolean isEmpty()
Overrides:
isEmpty in class AbstractCollection

contains

public boolean contains(Object o)
Overrides:
contains in class AbstractCollection

toArray

public Object[] toArray()
Overrides:
toArray in class AbstractCollection

toArray

public Object[] toArray(Object[] a)
Overrides:
toArray in class AbstractCollection

clear

public void clear()
Overrides:
clear in class AbstractCollection

iterator

public Iterator iterator()
Overrides:
iterator in class AbstractCollection

remove

public boolean remove(Object o)
Overrides:
remove in class AbstractCollection

containsAll

public boolean containsAll(Collection c)
Overrides:
containsAll in class AbstractCollection

addAll

public boolean addAll(Collection c)
Overrides:
addAll in class AbstractCollection

removeAll

public boolean removeAll(Collection c)
Overrides:
removeAll in class AbstractSet

retainAll

public boolean retainAll(Collection c)
Overrides:
retainAll in class AbstractCollection

add

public boolean add(Object o)
Overrides:
add in class AbstractCollection

Colt 1.0.3

Submit a bug or feature. Check the Colt home page for the latest news.