edu.emory.mathcs.backport.java.util.concurrent
public class ConcurrentSkipListSet extends AbstractSet implements NavigableSet, Cloneable, Serializable
This implementation provides expected average log(n) time cost for the contains, add, and remove operations and their variants. Insertion, removal, and access operations safely execute concurrently by multiple threads. Iterators are weakly consistent, returning elements reflecting the state of the set at some point at or since the creation of the iterator. They do not throw java.util.ConcurrentModificationException, and may proceed concurrently with other operations. Ascending ordered views and their iterators are faster than descending ones.
Beware that, unlike in most collections, the size method is not a constant-time operation. Because of the asynchronous nature of these sets, determining the current number of elements requires a traversal of the elements. Additionally, the bulk operations addAll, removeAll, retainAll, and containsAll are not guaranteed to be performed atomically. For example, an iterator operating concurrently with an addAll operation might view only some of the added elements.
This class and its iterators implement all of the optional methods of the Set and Iterator interfaces. Like most other concurrent collection implementations, this class does not permit the use of null elements, because null arguments and return values cannot be reliably distinguished from the absence of elements.
This class is a member of the Java Collections Framework.
Since: 1.6
Constructor Summary | |
---|---|
ConcurrentSkipListSet()
Constructs a new, empty set that orders its elements according to
their Comparable natural ordering. | |
ConcurrentSkipListSet(Comparator comparator)
Constructs a new, empty set that orders its elements according to
the specified comparator.
| |
ConcurrentSkipListSet(Collection c)
Constructs a new set containing the elements in the specified
collection, that orders its elements according to their
Comparable natural ordering.
| |
ConcurrentSkipListSet(SortedSet s)
Constructs a new set containing the same elements and using the
same ordering as the specified sorted set.
|
Method Summary | |
---|---|
boolean | add(Object e)
Adds the specified element to this set if it is not already present.
|
Object | ceiling(Object e) |
void | clear()
Removes all of the elements from this set. |
Object | clone()
Returns a shallow copy of this ConcurrentSkipListSet
instance. |
Comparator | comparator() |
boolean | contains(Object o)
Returns true if this set contains the specified element.
|
Iterator | descendingIterator()
Returns an iterator over the elements in this set in descending order.
|
NavigableSet | descendingSet()
Returns a reverse order view of the elements contained in this set.
|
boolean | equals(Object o)
Compares the specified object with this set for equality. |
Object | first() |
Object | floor(Object e) |
NavigableSet | headSet(Object toElement, boolean inclusive) |
SortedSet | headSet(Object toElement) |
Object | higher(Object e) |
boolean | isEmpty()
Returns true if this set contains no elements. |
Iterator | iterator()
Returns an iterator over the elements in this set in ascending order.
|
Object | last() |
Object | lower(Object e) |
Object | pollFirst() |
Object | pollLast() |
boolean | remove(Object o)
Removes the specified element from this set if it is present.
|
boolean | removeAll(Collection c)
Removes from this set all of its elements that are contained in
the specified collection. |
int | size()
Returns the number of elements in this set. |
NavigableSet | subSet(Object fromElement, boolean fromInclusive, Object toElement, boolean toInclusive) |
SortedSet | subSet(Object fromElement, Object toElement) |
NavigableSet | tailSet(Object fromElement, boolean inclusive) |
SortedSet | tailSet(Object fromElement) |
Parameters: comparator the comparator that will be used to order this set. If null, the Comparable natural ordering of the elements will be used.
Parameters: c The elements that will comprise the new set
Throws: ClassCastException if the elements in c are not Comparable, or are not mutually comparable NullPointerException if the specified collection or any of its elements are null
Parameters: s sorted set whose elements will comprise the new set
Throws: NullPointerException if the specified sorted set or any of its elements are null
Parameters: e element to be added to this set
Returns: true if this set did not already contain the specified element
Throws: ClassCastException if e cannot be compared with the elements currently in this set NullPointerException if the specified element is null
Throws: ClassCastException {@inheritDoc } NullPointerException if the specified element is null
Returns: a shallow copy of this set
Parameters: o object to be checked for containment in this set
Returns: true if this set contains the specified element
Throws: ClassCastException if the specified element cannot be compared with the elements currently in this set NullPointerException if the specified element is null
Returns: an iterator over the elements in this set in descending order
The returned set has an ordering equivalent to
Collections.reverseOrder
(comparator()).
The expression {@code s.descendingSet().descendingSet()} returns a
view of {@code s} essentially equivalent to {@code s}.
Returns: a reverse order view of this set
Parameters: o the object to be compared for equality with this set
Returns: true if the specified object is equal to this set
Throws: NoSuchElementException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if the specified element is null
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code toElement} is null IllegalArgumentException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code toElement} is null IllegalArgumentException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if the specified element is null
Returns: true if this set contains no elements
Returns: an iterator over the elements in this set in ascending order
Throws: NoSuchElementException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if the specified element is null
Parameters: o object to be removed from this set, if present
Returns: true if this set contained the specified element
Throws: ClassCastException if o cannot be compared with the elements currently in this set NullPointerException if the specified element is null
Parameters: c collection containing elements to be removed from this set
Returns: true if this set changed as a result of the call
Throws: ClassCastException if the types of one or more elements in this set are incompatible with the specified collection NullPointerException if the specified collection or any of its elements are null
Beware that, unlike in most collections, this method is NOT a constant-time operation. Because of the asynchronous nature of these sets, determining the current number of elements requires traversing them all to count them. Additionally, it is possible for the size to change during execution of this method, in which case the returned result will be inaccurate. Thus, this method is typically not very useful in concurrent applications.
Returns: the number of elements in this set
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code fromElement} or {@code toElement} is null IllegalArgumentException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code fromElement} or {@code toElement} is null IllegalArgumentException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code fromElement} is null IllegalArgumentException {@inheritDoc }
Throws: ClassCastException {@inheritDoc } NullPointerException if {@code fromElement} is null IllegalArgumentException {@inheritDoc }