edu.emory.mathcs.util.concurrent
Class CopyOnWriteArraySet

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractSet
              |
              +--edu.emory.mathcs.util.concurrent.CopyOnWriteArraySet
All Implemented Interfaces:
java.util.Collection, java.io.Serializable, java.util.Set

public class CopyOnWriteArraySet
extends java.util.AbstractSet
implements java.io.Serializable

A Set that uses java.util.concurrent.CopyOnWriteArrayList for all of its operations. Thus, it shares the same basic properties:

Sample Usage. The following code sketch uses a copy-on-write set to maintain a set of Handler objects that perform some action upon state updates.

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

 class X {
    private final CopyOnWriteArraySet<Handler> handlers = new CopyOnWriteArraySet<Handler>();
    public void addHandler(Handler h) { handlers.add(h); }

    private long internalState;
    private synchronized void changeState() { internalState = ...; }

    public void update() {
       changeState();
       for (Handler handler : handlers)
          handler.handle();
    }
 }
 

This class is a member of the Java Collections Framework.

Since:
1.5
See Also:
CopyOnWriteArrayList, Serialized Form

Constructor Summary
CopyOnWriteArraySet()
          Creates an empty set.
CopyOnWriteArraySet(java.util.Collection c)
          Creates a set containing all of the elements of the specified Collection.
 
Method Summary
 boolean add(java.lang.Object o)
           
 boolean addAll(java.util.Collection c)
           
 void clear()
           
 boolean contains(java.lang.Object o)
           
 boolean containsAll(java.util.Collection c)
           
 boolean isEmpty()
           
 java.util.Iterator iterator()
           
 boolean remove(java.lang.Object o)
           
 boolean removeAll(java.util.Collection c)
           
 boolean retainAll(java.util.Collection c)
           
 int size()
           
 java.lang.Object[] toArray()
           
 java.lang.Object[] toArray(java.lang.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
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CopyOnWriteArraySet

public CopyOnWriteArraySet()
Creates an empty set.


CopyOnWriteArraySet

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

Parameters:
c - the collection
Method Detail

size

public int size()
Specified by:
size in interface java.util.Set
Specified by:
size in class java.util.AbstractCollection

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface java.util.Set
Overrides:
isEmpty in class java.util.AbstractCollection

contains

public boolean contains(java.lang.Object o)
Specified by:
contains in interface java.util.Set
Overrides:
contains in class java.util.AbstractCollection

toArray

public java.lang.Object[] toArray()
Specified by:
toArray in interface java.util.Set
Overrides:
toArray in class java.util.AbstractCollection

toArray

public java.lang.Object[] toArray(java.lang.Object[] a)
Specified by:
toArray in interface java.util.Set
Overrides:
toArray in class java.util.AbstractCollection

clear

public void clear()
Specified by:
clear in interface java.util.Set
Overrides:
clear in class java.util.AbstractCollection

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface java.util.Set
Specified by:
iterator in class java.util.AbstractCollection

remove

public boolean remove(java.lang.Object o)
Specified by:
remove in interface java.util.Set
Overrides:
remove in class java.util.AbstractCollection

add

public boolean add(java.lang.Object o)
Specified by:
add in interface java.util.Set
Overrides:
add in class java.util.AbstractCollection

containsAll

public boolean containsAll(java.util.Collection c)
Specified by:
containsAll in interface java.util.Set
Overrides:
containsAll in class java.util.AbstractCollection

addAll

public boolean addAll(java.util.Collection c)
Specified by:
addAll in interface java.util.Set
Overrides:
addAll in class java.util.AbstractCollection

removeAll

public boolean removeAll(java.util.Collection c)
Specified by:
removeAll in interface java.util.Set
Overrides:
removeAll in class java.util.AbstractSet

retainAll

public boolean retainAll(java.util.Collection c)
Specified by:
retainAll in interface java.util.Set
Overrides:
retainAll in class java.util.AbstractCollection