is new.
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractSet<E>
java.util.TreeSet<E>
Type Parameters:
E - the type of elements maintained by this set
All Implemented Interfaces:
Serializable
,
Cloneable
,
Iterable
<E>,
Collection
<E>,
NavigableSet
<E>,
Set
<E>,
SortedSet
<E>
public class TreeSet<E>
NavigableSet
A
NavigableSet
implementation based on a
TreeMap
. The elements are ordered using their
natural ordering
, or by a
Comparator
provided at set creation time, depending on which constructor is used.
This class implements the
Set
interface, backed by a
TreeMap
instance. This class guarantees that the sorted set will be in ascending element order, sorted according to the
natural order
of the elements (see
Comparable
), or by the comparator provided at set creation time, depending on which constructor is used.
This implementation provides guaranteed log(n) time cost for the basic operations ( add , remove and contains ).
Note that the ordering maintained by a set (whether or not an explicit comparator is provided) must be
consistent with equals
if it is to correctly implement the
Set
interface. (See
Comparable
or
Comparator
for a precise definition of
consistent with equals
.) This is so because the
Set
interface is defined in terms of the
equals
operation, but a
TreeSet
instance performs all
element
key
comparisons using its
compareTo
(or
compare
) method, so two
elements
keys
that are deemed equal by this method are, from the standpoint of the set, equal. The behavior of a set
is
well-defined even if its ordering is inconsistent with equals; it just fails to obey the general contract of the
Set
interface.
Note that this implementation is not synchronized.
If multiple threads access a
tree
set concurrently, and at least one of the threads modifies the set, it
must
be synchronized externally. This is typically accomplished by synchronizing on some object that naturally encapsulates the set. If no such object exists, the set should be "wrapped" using the
Collections.synchronizedSortedSet
Collections.synchronizedSet
method. This is best done at creation time, to prevent accidental unsynchronized access to the set:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
The
iterators
Iterators
returned by this class's
iterator
method are
fail-fast
: if the set is modified at any time after the iterator is created, in any way except through the iterator's own
remove
method, the iterator will throw a
ConcurrentModificationException
ConcurrentModificationException
. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.
Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.
This class is a member of the Java Collections Framework .
| Constructor Summary | |
|---|---|
|
TreeSet
() Constructs a new, empty
tree
set, sorted according to the
ordering of its elements.
|
|
|
TreeSet
(
Collection
<? extends
E
Constructs a new
tree
set containing the elements in the specified collection, sorted according to the
ordering
of its elements.
|
|
|
TreeSet
(
Comparator
<? super
E
Constructs a new, empty
tree
set, sorted according to the specified comparator. |
|
|
TreeSet
(
SortedSet
<
E
Constructs a new
tree
set containing the same elements
and using the same ordering
as the specified sorted
set.
|
|
| Method Summary | |
|---|---|
| boolean |
add
(
E
Adds the specified element to this set if it is not already present. |
| boolean |
addAll
(
Collection
<? extends
E
> c) Adds all of the elements in the specified collection to this set. |
E
|
ceiling
(
E
Returns the least element in this set greater than or equal to the given element, or
null
if there is no such element.
|
| void |
clear
() Removes all of the elements from this set. |
| Object |
clone
() Returns a shallow copy of this TreeSet instance. |
| Comparator <? super E |
comparator
() Returns the comparator used to order
the elements in
this
the
natural ordering
|
| boolean |
contains
(
Object
o) Returns true if this set contains the specified element. |
Iterator
<
E
|
descendingIterator
Returns
an iterator over
the
elements
set in descending order.
|
E
|
first
()
Returns the first (lowest) element currently in this set.
|
|
|
E
|
floor
(
E
Returns the greatest element in this set less than or equal to the given element, or
null
if there is no such element.
|
SortedSet
<
E
|
headSet
(
E
Equivalent to
navigableHeadSet(E)
SortedSet
interface.
|
E
|
higher
(
E
Returns the least element in this set strictly greater than the given element, or
null
if there is no such element.
|
| boolean |
isEmpty
() Returns true if this set contains no elements. |
| Iterator < E |
iterator
() Returns an iterator over the elements in this
set in ascending order.
|
| E |
last
() Returns the last (highest) element currently in this
|
E
|
lower
(
E
Returns the greatest element in this set strictly less than the given element, or
null
if there is no such element.
|
NavigableSet
<
E
|
navigableHeadSet
(
E
Returns a view of the portion of this set whose elements are strictly less than
toElement
.
|
NavigableSet
<
E
|
navigableSubSet
(
E
fromElement,
E
Returns a view of the portion of this set whose elements range from
fromElement
, inclusive, to
toElement
, exclusive.
|
NavigableSet
<
E
|
navigableTailSet
(
E
Returns a view of the portion of this set whose elements are greater than or equal to
fromElement
.
|
E
|
pollFirst
()
Retrieves and removes the first (lowest) element, or returns
null
if this set is empty.
|
E
|
pollLast
()
Retrieves and removes the last (highest) element, or returns
null
if this set is empty.
|
| boolean |
remove
(
Object
o) Removes the specified element from this set if it is present. |
| int |
size
() Returns the number of elements in this set (its cardinality). |
| SortedSet < E |
subSet
(
E
fromElement,
E
Equivalent
navigableSubSet(E, E)
SortedSet
interface.
|
| SortedSet < E |
tailSet
(
E
Equivalent
navigableTailSet(E)
SortedSet
interface.
|
| Methods inherited from class java.util. AbstractSet |
|---|
| equals , hashCode , removeAll |
| Methods inherited from class java.util. AbstractCollection |
|---|
| containsAll , retainAll , toArray , toArray , toString |
| Methods inherited from class java.lang. Object |
|---|
| finalize , getClass , notify , notifyAll , wait , wait , wait |
| Methods inherited from interface java.util. Set |
|---|
| containsAll , equals , hashCode , removeAll , retainAll , toArray , toArray |
| Constructor Detail |
|---|
public TreeSet()
tree
set, sorted according to the
ordering of its elements.
Comparable
public TreeSet(Comparator<? super E> comparator)
> c)
tree
set, sorted according to the specified comparator. All elements inserted into the set must be
mutually comparable
by the specified comparator:
comparator.compare(e1, e2)
must not throw a
ClassCastException
for any elements
e1
and
e2
in the set. If the user attempts to add an element to the set that violates this constraint, the
add(Object)
call will throw a
ClassCastException
.
comparator
order
If
, the
natural ordering
of the elements will be used.
public TreeSet(Collection<? extends E> c)
tree
set containing the elements in the specified collection, sorted according to the
ordering
of its elements.
elements
Comparable
elements
e1.compareTo(e2)
e1
e2
collection whose
set
elements
c
Comparable
,
comparable
null
public TreeSet(SortedSet<E> s)
tree
set containing the same elements
and using the same ordering
as the specified sorted
set.
set
null
| Method Detail |
|---|
public Iterator<E> iterator()
set
iterator
in interface
NavigableSet
<
E
>
Specified by:
set in ascending order
descendingIterator
public
Iterator
<
E
>
descendingIterator
()
Returns an iterator over the elements in this set in descending order.
Specified by:
descendingIterator
in interface
NavigableSet
<
E
>
Returns:
an iterator over the elements in this set in descending order
Since:
1.6
public int size()
cardinality)
public boolean isEmpty()
elements
public boolean contains(Object o)
More formally, returns
true
if and only if this set contains an element
e
such that
(o==null ? e==null : o.equals(e))
.
set
element
set
NullPointerException
- if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements
public boolean add(Ee)
o)
More formally, adds the specified element
e
to this set if the set contains no element
e2
such that
(e==null ? e2==null : e.equals(e2))
. If this set already contains the element, the call leaves the set unchanged and returns
false
.
e
set
this
element
this set
NullPointerException
- if
the
specified element is null and this set uses natural ordering, or its comparator does not permit null elements
public boolean remove(Object o)
More formally, removes an element
e
such that
(o==null ? e==null : o.equals(e))
, if this set contains such an element. Returns
true
if this set contained the element (or equivalently, if this set changed as a result of the call). (This set will not contain the element once the call returns.)
present
this
element
this set
NullPointerException
- if
the
specified element is null and this set uses natural ordering, or its comparator does not permit null elements
public void clear()
The set will be empty after this call returns.
public boolean addAll(Collection<? extends E> c)
collection containing
elements to be added
to this set
call
set
- if the specified collection is null or if any element is null and this set uses natural ordering, or its comparator does not permit null elements
navigableSubSet
public
NavigableSet
<
E
>
navigableSubSet
(
E
fromElement,
E
toElement)
Description copied from interface:
NavigableSet
Returns a view of the portion of this set whose elements range from
fromElement
, inclusive, to
toElement
, exclusive. (If
fromElement
and
toElement
are equal, the returned set is empty.) The returned set is backed by this set, so changes in the returned set are reflected in this set, and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an
IllegalArgumentException
on an attempt to insert an element outside its range.
Specified by:
navigableSubSet
in interface
NavigableSet
<
E
>
Parameters:
fromElement - low endpoint (inclusive) of the returned set
toElement - high endpoint (exclusive) of the returned set
Returns:
a view of the portion of this set whose elements range from
fromElement
, inclusive, to
toElement
, exclusive
Throws:
ClassCastException
- if
fromElement
and
toElement
cannot be compared to one another using this set's comparator (or, if the set has no comparator, using natural ordering). Implementations may, but are not required to, throw this exception if
fromElement
or
toElement
cannot be compared to elements currently in the set.
NullPointerException
- if
fromElement
or
toElement
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
- if
fromElement
is greater than
toElement
; or if this set itself has a restricted range, and
fromElement
or
toElement
lies outside the bounds of the range.
Since:
1.6
navigableHeadSet
public
NavigableSet
<
E
>
navigableHeadSet
(
E
toElement)
Description copied from interface:
NavigableSet
Returns a view of the portion of this set whose elements are strictly less than
toElement
. The returned set is backed by this set, so changes in the returned set are reflected in this set, and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an
IllegalArgumentException
on an attempt to insert an element outside its range.
Specified by:
navigableHeadSet
in interface
NavigableSet
<
E
>
Parameters:
toElement - high endpoint (exclusive) of the returned set
Returns:
a view of the portion of this set whose elements are strictly less than
toElement
Throws:
ClassCastException
- if
toElement
is not compatible with this set's comparator (or, if the set has no comparator, if
toElement
does not implement
Comparable
). Implementations may, but are not required to, throw this exception if
toElement
cannot be compared to elements currently in the set.
NullPointerException
- if
toElement
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
- if this set itself has a restricted range, and
toElement
lies outside the bounds of the range
Since:
1.6
navigableTailSet
public
NavigableSet
<
E
>
navigableTailSet
(
E
fromElement)
Description copied from interface:
NavigableSet
Returns a view of the portion of this set whose elements are greater than or equal to
fromElement
. The returned set is backed by this set, so changes in the returned set are reflected in this set, and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an
IllegalArgumentException
on an attempt to insert an element outside its range.
Specified by:
navigableTailSet
in interface
NavigableSet
<
E
>
Parameters:
fromElement - low endpoint (inclusive) of the returned set
Returns:
a view of the portion of this set whose elements are greater than or equal to
fromElement
Throws:
ClassCastException
- if
fromElement
is not compatible with this set's comparator (or, if the set has no comparator, if
fromElement
does not implement
Comparable
). Implementations may, but are not required to, throw this exception if
fromElement
cannot be compared to elements currently in the set.
NullPointerException
- if
fromElement
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
- if this set itself has a restricted range, and
fromElement
lies outside the bounds of the range
Since:
1.6
public SortedSet<E> subSet(E fromElement,
E toElement)
Equivalent to
navigableSubSet(E, E)
but with a return type conforming to the
SortedSet
interface.
Returns a view of the portion of this set whose elements range from
fromElement
, inclusive, to
toElement
, exclusive. (If
fromElement
and
toElement
are equal, the returned
sorted
set is empty.) The returned
sorted
set is backed by this set, so changes in the returned
sorted
set are reflected in this set, and vice-versa. The returned
sorted
set supports all optional
set operations that this set supports.
Set operations.
The
sorted set
returned
set
by this method
will throw an
IllegalArgumentException
on an attempt
if the user attempts
to insert an element outside
its
the specified
range.
Note: this method always returns a
half-open range
(which includes its low endpoint but not its high endpoint). If you need a
closed range
(which includes both endpoints), and the element type allows for calculation of the successor of a specified value, merely request the subrange from
lowEndpoint
to
successor(highEndpoint)
. For example, suppose that
s
is a sorted set of strings. The following idiom obtains a view containing all of the strings in
s
from
low
to
high
, inclusive:
SortedSet sub = s.subSet(low, high+"\0");
SortedSet sub = s.subSet(low+"\0", high);
returned set
returned set
exclusive
Implementations may, but are not required to, throw this exception if
fromElement
or
toElement
cannot be compared to elements currently in the set.
NullPointerException
or
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
is greater than
; or if this set itself has a restricted range, and
fromElement
or
toElement
lies outside the bounds of the range
public SortedSet<E> headSet(E toElement)
Equivalent to
navigableHeadSet(E)
but with a return type conforming to the
SortedSet
interface.
Returns a view of the portion of this set whose elements are strictly less than
The sorted set returned by this method will throw an
IllegalArgumentException
if the user attempts to insert an element greater than or equal to
toElement
.
The returned set is backed by this set, so changes in the returned set are reflected in this set, and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an
Note: this method always returns a view that does not contain its (high) endpoint. If you need a view that does contain this endpoint, and the element type allows for calculation of the successor of a specified value, merely request a headSet bounded by
IllegalArgumentException
successor(highEndpoint)
on an attempt to insert an element outside its range.
. For example, suppose that
s
is a sorted set of strings. The following idiom obtains a view containing all of the strings in
s
that are less than or equal to
high
:
SortedSet head = s.headSet(high+"\0");
returned set
toElement
does not implement
Comparable
). Implementations may, but are not required to, throw this exception if
cannot be compared to elements currently in the set.
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
- if this set itself has a restricted range, and
toElement
lies outside the bounds of the range
public SortedSet<E> tailSet(E fromElement)
Equivalent to
navigableTailSet(E)
but with a return type conforming to the
SortedSet
interface.
Returns a view of the portion of this set whose elements are greater than or equal to
The sorted set returned by this method will throw an
IllegalArgumentException
if the user attempts to insert an element less than
fromElement
.
The returned set is backed by this set, so changes in the returned set are reflected in this set, and vice-versa. The returned set supports all optional set operations that this set supports.
The returned set will throw an
Note: this method always returns a view that contains its (low) endpoint. If you need a view that does not contain this endpoint, and the element type allows for calculation of the successor of a specified value, merely request a tailSet bounded by
IllegalArgumentException
successor(lowEndpoint)
on an attempt to insert an element outside its range.
. For example, suppose that
s
is a sorted set of strings. The following idiom obtains a view containing all of the strings in
s
that are strictly greater than
low
:
SortedSet tail = s.tailSet(low+"\0");
returned set
does not implement
Comparable
). Implementations may, but are not required to, throw this exception if
cannot be compared to elements currently in the set.
is null and this set uses natural ordering, or its comparator does not permit null elements
IllegalArgumentException
- if this set itself has a restricted range, and
fromElement
lies outside the bounds of the range
public Comparator<? super E> comparator()
Description copied from interface:
SortedSet
the elements in
this
the
natural ordering
of
its
elements.
the elements in
this
the natural ordering of
its elements
public E first()
Description copied from interface:
SortedSet
set
if this
empty
public E last()
Description copied from interface:
SortedSet
set
if this
empty
lower
public
E
lower
(
E
e)
Description copied from interface:
NavigableSet
Returns the greatest element in this set strictly less than the given element, or
null
if there is no such element.
Specified by:
lower
in interface
NavigableSet
<
E
>
Parameters:
e - the value to match
Returns:
the greatest element less than
e
, or
null
if there is no such element
Throws:
ClassCastException
- if the specified element cannot be compared with the elements currently in the set
NullPointerException
- if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements
Since:
1.6
floor
public
E
floor
(
E
e)
Description copied from interface:
NavigableSet
Returns the greatest element in this set less than or equal to the given element, or
null
if there is no such element.
Specified by:
floor
in interface
NavigableSet
<
E
>
Parameters:
e - the value to match
Returns:
the greatest element less than or equal to
e
, or
null
if there is no such element
Throws:
ClassCastException
- if the specified element cannot be compared with the elements currently in the set
NullPointerException
- if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements
Since:
1.6
ceiling
public
E
ceiling
(
E
e)
Description copied from interface:
NavigableSet
Returns the least element in this set greater than or equal to the given element, or
null
if there is no such element.
Specified by:
ceiling
in interface
NavigableSet
<
E
>
Parameters:
e - the value to match
Returns:
the least element greater than or equal to
e
, or
null
if there is no such element
Throws:
ClassCastException
- if the specified element cannot be compared with the elements currently in the set
NullPointerException
- if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements
Since:
1.6
higher
public
E
higher
(
E
e)
Description copied from interface:
NavigableSet
Returns the least element in this set strictly greater than the given element, or
null
if there is no such element.
Specified by:
higher
in interface
NavigableSet
<
E
>
Parameters:
e - the value to match
Returns:
the least element greater than
e
, or
null
if there is no such element
Throws:
ClassCastException
- if the specified element cannot be compared with the elements currently in the set
NullPointerException
- if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements
Since:
1.6
pollFirst
public
E
pollFirst
()
Description copied from interface:
NavigableSet
Retrieves and removes the first (lowest) element, or returns
null
if this set is empty.
Specified by:
pollFirst
in interface
NavigableSet
<
E
>
Returns:
the first element, or
null
if this set is empty
Since:
1.6
pollLast
public
E
pollLast
()
Description copied from interface:
NavigableSet
Retrieves and removes the last (highest) element, or returns
null
if this set is empty.
Specified by:
pollLast
in interface
NavigableSet
<
E
>
Returns:
the last element, or
null
if this set is empty
Since:
1.6
public Object clone()
set