E - the type of elements maintained by this setpublic class ConcurrentSkipListSet<E>
extends java.util.AbstractSet<E>
implements java.util.NavigableSet<E>, java.io.Serializable
NavigableSet implementation based on
a ConcurrentSkipListMap. The elements of the set are kept
sorted according to their natural ordering,
or by a Comparator provided at set creation time, depending
on which constructor is used.
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 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, and so may report inaccurate results if this collection is modified during traversal. Additionally, the bulk operations addAll, removeAll, retainAll, containsAll, equals, and toArray 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.
| Constructor and Description |
|---|
ConcurrentSkipListSet()
Constructs a new, empty set that orders its elements according to
their natural ordering.
|
ConcurrentSkipListSet(java.util.Collection<? extends E> c)
Constructs a new set containing the elements in the specified
collection, that orders its elements according to their
natural ordering.
|
ConcurrentSkipListSet(java.util.Comparator<? super E> comparator)
Constructs a new, empty set that orders its elements according to
the specified comparator.
|
ConcurrentSkipListSet(java.util.SortedSet<E> s)
Constructs a new set containing the same elements and using the
same ordering as the specified sorted set.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E e)
Adds the specified element to this set if it is not already present.
|
E |
ceiling(E e) |
void |
clear()
Removes all of the elements from this set.
|
java.util.Comparator<? super E> |
comparator() |
boolean |
contains(java.lang.Object o)
Returns true if this set contains the specified element.
|
java.util.Iterator<E> |
descendingIterator()
Returns an iterator over the elements in this set in descending order.
|
java.util.NavigableSet<E> |
descendingSet()
Returns a reverse order view of the elements contained in this set.
|
boolean |
equals(java.lang.Object o)
Compares the specified object with this set for equality.
|
E |
first() |
E |
floor(E e) |
java.util.NavigableSet<E> |
headSet(E toElement) |
java.util.NavigableSet<E> |
headSet(E toElement,
boolean inclusive) |
E |
higher(E e) |
boolean |
isEmpty()
Returns true if this set contains no elements.
|
java.util.Iterator<E> |
iterator()
Returns an iterator over the elements in this set in ascending order.
|
E |
last() |
E |
lower(E e) |
E |
peekFirst() |
E |
peekLast() |
E |
pollFirst() |
E |
pollLast() |
boolean |
remove(java.lang.Object o)
Removes the specified element from this set if it is present.
|
boolean |
removeAll(java.util.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.
|
java.util.NavigableSet<E> |
subSet(E fromElement,
boolean fromInclusive,
E toElement,
boolean toInclusive) |
java.util.NavigableSet<E> |
subSet(E fromElement,
E toElement) |
java.util.NavigableSet<E> |
tailSet(E fromElement) |
java.util.NavigableSet<E> |
tailSet(E fromElement,
boolean inclusive) |
addAll, containsAll, retainAll, toArray, toArray, toStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitpublic ConcurrentSkipListSet()
public ConcurrentSkipListSet(java.util.Comparator<? super E> comparator)
comparator - the comparator that will be used to order this set.
If null, the natural
ordering of the elements will be used.public ConcurrentSkipListSet(java.util.Collection<? extends E> c)
c - The elements that will comprise the new setjava.lang.ClassCastException - if the elements in c are
not Comparable, or are not mutually comparablejava.lang.NullPointerException - if the specified collection or any
of its elements are nullpublic ConcurrentSkipListSet(java.util.SortedSet<E> s)
s - sorted set whose elements will comprise the new setjava.lang.NullPointerException - if the specified sorted set or any
of its elements are nullpublic int size()
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.
public boolean isEmpty()
public boolean contains(java.lang.Object o)
contains in interface java.util.Collection<E>contains in interface java.util.Set<E>contains in class java.util.AbstractCollection<E>o - object to be checked for containment in this setjava.lang.ClassCastException - if the specified element cannot be
compared with the elements currently in this setjava.lang.NullPointerException - if the specified element is nullpublic boolean add(E e)
add in interface java.util.Collection<E>add in interface java.util.Set<E>add in class java.util.AbstractCollection<E>e - element to be added to this setjava.lang.ClassCastException - if e cannot be compared
with the elements currently in this setjava.lang.NullPointerException - if the specified element is nullpublic boolean remove(java.lang.Object o)
remove in interface java.util.Collection<E>remove in interface java.util.Set<E>remove in class java.util.AbstractCollection<E>o - object to be removed from this set, if presentjava.lang.ClassCastException - if o cannot be compared
with the elements currently in this setjava.lang.NullPointerException - if the specified element is nullpublic void clear()
public java.util.Iterator<E> iterator()
iterator in interface java.lang.Iterable<E>iterator in interface java.util.Collection<E>iterator in interface java.util.NavigableSet<E>iterator in interface java.util.Set<E>iterator in class java.util.AbstractCollection<E>public java.util.Iterator<E> descendingIterator()
descendingIterator in interface java.util.NavigableSet<E>public boolean equals(java.lang.Object o)
public boolean removeAll(java.util.Collection<?> c)
removeAll in interface java.util.Collection<E>removeAll in interface java.util.Set<E>removeAll in class java.util.AbstractSet<E>c - collection containing elements to be removed from this setjava.lang.ClassCastException - if the types of one or more elements in this
set are incompatible with the specified collectionjava.lang.NullPointerException - if the specified collection or any
of its elements are nullpublic E lower(E e)
lower in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if the specified element is nullpublic E floor(E e)
floor in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if the specified element is nullpublic E ceiling(E e)
ceiling in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if the specified element is nullpublic E higher(E e)
higher in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if the specified element is nullpublic java.util.Comparator<? super E> comparator()
comparator in interface java.util.SortedSet<E>public E first()
first in interface java.util.SortedSet<E>java.util.NoSuchElementExceptionpublic E peekFirst()
public E last()
last in interface java.util.SortedSet<E>java.util.NoSuchElementExceptionpublic E peekLast()
public java.util.NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
subSet in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if fromElement or
toElement is nulljava.lang.IllegalArgumentExceptionpublic java.util.NavigableSet<E> headSet(E toElement, boolean inclusive)
headSet in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if toElement is nulljava.lang.IllegalArgumentExceptionpublic java.util.NavigableSet<E> tailSet(E fromElement, boolean inclusive)
tailSet in interface java.util.NavigableSet<E>java.lang.ClassCastExceptionjava.lang.NullPointerException - if fromElement is nulljava.lang.IllegalArgumentExceptionpublic java.util.NavigableSet<E> descendingSet()
The returned set has an ordering equivalent to
Collections.reverseOrder(comparator()).
The expression s.descendingSet().descendingSet() returns a
view of s essentially equivalent to s.
descendingSet in interface java.util.NavigableSet<E>