|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.TreeSet<E>
E
- 此 set 維護的元素的型別public class TreeSet<E>
基於 TreeMap
的 NavigableSet
實作。使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator
進行排序,具體取決於使用的建構子。
此實作為基本操作(add
、remove
和 contains
)提供受保證的 log(n) 時間開銷。
注意,如果要正確實作 Set
介面,則 set 維護的順序(無論是否提供了顯式比較器)必須與 equals 一致。(關於與 equals 一致 的精確定義,請參閱 Comparable
或 Comparator
。)這是因為 Set
介面是按照 equals
操作定義的,但 TreeSet
實例使用它的 compareTo
(或 compare
)方法對所有元素進行比較,因此從 set 的觀點來看,此方法認為相等的兩個元素就是相等的。即使 set 的順序與 equals 不一致,其行為也是 定義良好的;它只是違背了 Set
介面的常規協定。
注意,此實作不是同步的。如果多個執行緒同時存取一個 TreeSet,而其中至少一個執行緒修改了該 set,那麼它必須 外部同步。這一般是通過對自然封裝該 set 的物件執行同步操作來完成的。如果不存在這樣的物件,則應該使用 Collections.synchronizedSortedSet
方法來「包裹」該 set。此操作最好在創建時進行,以防止對 set 的意外非同步存取:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
此類別的 iterator
方法返回的迭代器是快速失敗 的:在創建迭代器之後,如果從結構上對 set 進行修改,除非通過迭代器自身的 remove
方法,否則在其他任何時間以任何方式進行修改都將導致迭代器拋出 ConcurrentModificationException
。因此,對於共時的修改,迭代器很快就完全失敗,而不會冒著在將來不確定的時間發生不確定行為的風險。
注意,迭代器的快速失敗行為無法得到保證,一般來說,存在不同步的共時修改時,不可能作出任何肯定的保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException
。因此,編寫依賴於此異常的程序的做法是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測 bug。
此類別是 Java Collections Framework 的成員。
Collection
,
Set
,
HashSet
,
Comparable
,
Comparator
,
TreeMap
,
序列化表格建構子摘要 | |
---|---|
TreeSet()
建構一個新的空 set,該 set 根據其元素的自然順序進行排序。 |
|
TreeSet(Collection<? extends E> c)
建構一個套件含指定 collection 元素的新 TreeSet,它按照其元素的自然順序進行排序。 |
|
TreeSet(Comparator<? super E> comparator)
建構一個新的空 TreeSet,它根據指定比較器進行排序。 |
|
TreeSet(SortedSet<E> s)
建構一個與指定有序 set 具有相同映射關係和相同排序的新 TreeSet。 |
方法摘要 | |
---|---|
boolean |
add(E e)
將指定的元素添加到此 set(如果該元素尚未存在於 set 中)。 |
boolean |
addAll(Collection<? extends E> c)
將指定 collection 中的所有元素添加到此 set 中。 |
E |
ceiling(E e)
返回此 set 中大於等於給定元素的最小元素;如果不存在這樣的元素,則返回 null 。 |
void |
clear()
移除此 set 中的所有元素。 |
Object |
clone()
返回 TreeSet 實例的淺表副本。 |
Comparator<? super E> |
comparator()
返回對此 set 中的元素進行排序的比較器;如果此 set 使用其元素的自然順序,則返回 null。 |
boolean |
contains(Object o)
如果此 set 套件含指定的元素,則返回 true 。 |
Iterator<E> |
descendingIterator()
返回在此 set 元素上按降序進行迭代的迭代器。 |
NavigableSet<E> |
descendingSet()
返回此 set 中所包含元素的逆序視圖。 |
E |
first()
返回此 set 中當前第一個(最低)元素。 |
E |
floor(E e)
返回此 set 中小於等於給定元素的最大元素;如果不存在這樣的元素,則返回 null 。 |
SortedSet<E> |
headSet(E toElement)
返回此 set 的部分視圖,其元素嚴格小於 toElement。 |
NavigableSet<E> |
headSet(E toElement,
boolean inclusive)
返回此 set 的部分視圖,其元素小於(或等於,如果 inclusive 為 true)toElement 。 |
E |
higher(E e)
返回此 set 中嚴格大於給定元素的最小元素;如果不存在這樣的元素,則返回 null 。 |
boolean |
isEmpty()
如果此 set 不包含任何元素,則返回 true 。 |
Iterator<E> |
iterator()
返回在此 set 中的元素上按升序進行迭代的迭代器。 |
E |
last()
返回此 set 中當前最後一個(最高)元素。 |
E |
lower(E e)
返回此 set 中嚴格小於給定元素的最大元素;如果不存在這樣的元素,則返回 null 。 |
E |
pollFirst()
獲取並移除第一個(最低)元素;如果此 set 為空,則返回 null 。 |
E |
pollLast()
獲取並移除最後一個(最高)元素;如果此 set 為空,則返回 null 。 |
boolean |
remove(Object o)
將指定的元素從 set 中移除(如果該元素存在於此 set 中)。 |
int |
size()
返回 set 中的元素數(set 的容量)。 |
NavigableSet<E> |
subSet(E fromElement,
boolean fromInclusive,
E toElement,
boolean toInclusive)
返回此 set 的部分視圖,其元素範圍從 fromElement 到 toElement 。 |
SortedSet<E> |
subSet(E fromElement,
E toElement)
返回此 set 的部分視圖,其元素從 fromElement(包括)到 toElement(不包括)。 |
SortedSet<E> |
tailSet(E fromElement)
返回此 set 的部分視圖,其元素大於等於 fromElement。 |
NavigableSet<E> |
tailSet(E fromElement,
boolean inclusive)
返回此 set 的部分視圖,其元素大於(或等於,如果 inclusive 為 true)fromElement 。 |
從類別 java.util.AbstractSet 繼承的方法 |
---|
equals, hashCode, removeAll |
從類別 java.util.AbstractCollection 繼承的方法 |
---|
containsAll, retainAll, toArray, toArray, toString |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
從介面 java.util.Set 繼承的方法 |
---|
containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray |
建構子詳細資訊 |
---|
public TreeSet()
Comparable
介面。另外,所有這些元素都必須是可互相比較的:對於 set 中的任意兩個元素 e1
和 e2
,執行 e1.compareTo(e2)
都不得拋出 ClassCastException
。如果使用者試圖將違反此約束的元素添加到 set(例如,使用者試圖將字元串元素添加到其元素為整數的 set 中),則 add
調用將拋出 ClassCastException
。
public TreeSet(Comparator<? super E> comparator)
e1
和 e2
,執行 comparator.compare(e1, e2)
都不得拋出 ClassCastException
。如果使用者試圖將違反此約束的元素添加到 set 中,則 add
調用將拋出 ClassCastException
。
comparator
- 將用來對此 set 進行排序的比較器。如果該參數為 null
,則使用元素的自然順序。public TreeSet(Collection<? extends E> c)
Comparable
介面。另外,所有這些元素都必須是可互相比較的:對於 set 中的任意兩個元素 e1
和 e2
,執行 e1.compareTo(e2)
都不得拋出 ClassCastException
。
c
- 一個 collection,其元素將組成新的 set
ClassCastException
- 如果 c
中的元素不是 Comparable
,或者是不可相互比較的
NullPointerException
- 如果指定 collection 為 nullpublic TreeSet(SortedSet<E> s)
s
- 一個有序 set,其元素將組成新 set
NullPointerException
- 如果指定有序 set 為 null方法詳細資訊 |
---|
public Iterator<E> iterator()
Iterable<E>
中的 iterator
Collection<E>
中的 iterator
NavigableSet<E>
中的 iterator
Set<E>
中的 iterator
AbstractCollection<E>
中的 iterator
public Iterator<E> descendingIterator()
NavigableSet<E>
中的 descendingIterator
public NavigableSet<E> descendingSet()
NavigableSet
複製的描述remove
操作除外),則迭代結果是不確定的。
返回 set 的順序等於 Collections.reverseOrder
(comparator())。表達式 s.descendingSet().descendingSet()
返回的 s
視圖基本等於 s
。
NavigableSet<E>
中的 descendingSet
public int size()
Collection<E>
中的 size
Set<E>
中的 size
AbstractCollection<E>
中的 size
public boolean isEmpty()
true
。
Collection<E>
中的 isEmpty
Set<E>
中的 isEmpty
AbstractCollection<E>
中的 isEmpty
true
public boolean contains(Object o)
true
。更確切地講,當且僅當此 set 套件含滿足 (o==null ? e==null : o.equals(e)) 的元素 e
時,返回 true
。
Collection<E>
中的 contains
Set<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 將檢查是否包含在此 set 中的物件
true
ClassCastException
- 如果指定物件無法與該 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public boolean add(E e)
e2
,則將指定元素 e
添加到此 set 中。如果此 set 已經包含這樣的元素,則該調用不改變此 set 並返回 false
。
Collection<E>
中的 add
Set<E>
中的 add
AbstractCollection<E>
中的 add
e
- 要添加到此 set 的物件
true
ClassCastException
- 如果指定物件無法與此 set 的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public boolean remove(Object o)
e
,則移除一個這樣的元素。如果此 set 套件含這樣的元素(或者此 set 由於調用而發生更改),則返回 true
。(一旦調用返回,則此 set 不再包含這樣的元素。)
Collection<E>
中的 remove
Set<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 將從此 set 中移除的物件(如果存在)
true
ClassCastException
- 如果指定物件無法與該 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public void clear()
Collection<E>
中的 clear
Set<E>
中的 clear
AbstractCollection<E>
中的 clear
public boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
Set<E>
中的 addAll
AbstractCollection<E>
中的 addAll
c
- 套件含要添加到此 set 的元素的 collection
true
ClassCastException
- 如果提供的元素無法與 set 中的當前元素進行比較
NullPointerException
- 如果指定 collection 為 null,或者任何元素為 null 並且此 set 使用自然順序,或者其比較器不允許使用 null 元素AbstractCollection.add(Object)
public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
NavigableSet
複製的描述fromElement
到 toElement
。如果 fromElement
和 toElement
相等,則返回的 set 為空,除非 fromExclusive
和 toExclusive
都為 true。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。
如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException
。
NavigableSet<E>
中的 subSet
fromElement
- 返回 set 的低端點fromInclusive
- 如果低端點要包含在返回的視圖中,則為 true
toElement
- 返回 set 的高端點toInclusive
- 如果高端點要包含在返回的視圖中,則為 true
fromElement
(包括)到 toElement
(不包括)
ClassCastException
- 如果不能使用此 set 的比較器或者使用自然順序(如果 set 沒有比較器)比較 fromElement
和 toElement
。如果 fromElement
或 toElement
不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 fromElement
或 toElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果 fromElement
大於 toElement
;如果此 set 本身有範圍限制,並且 fromElement
或 toElement
位於範圍的邊界之外。public NavigableSet<E> headSet(E toElement, boolean inclusive)
NavigableSet
複製的描述inclusive
為 true)toElement
。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。
如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException
。
NavigableSet<E>
中的 headSet
toElement
- 返回 set 的高端點inclusive
- 如果高端點要包含在返回的視圖中,則為 true
inclusive
為 true)toElement
ClassCastException
- 如果 toElement
與此 set 的比較器不相容(如果 set 沒有比較器;如果 toElement
沒有實作 Comparable
)。如果 toElement
不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 toElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果此 set 本身有範圍限制,並且 toElement
位於範圍的邊界之外public NavigableSet<E> tailSet(E fromElement, boolean inclusive)
NavigableSet
複製的描述inclusive
為 true)fromElement
。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。
如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException
。
NavigableSet<E>
中的 tailSet
fromElement
- 返回 set 的低端點inclusive
- 如果低端點要包含在返回的視圖中,則為 true
fromElement
ClassCastException
- 如果 fromElement
與此 set 的比較器不相容(如果 set 沒有任何比較器;如果 fromElement
沒有實作 Comparable
)。如果 fromElement
不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 fromElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果此 set 本身有範圍限制,並且 fromElement
位於範圍的邊界之外public SortedSet<E> subSet(E fromElement, E toElement)
NavigableSet
複製的描述如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。
等效於 subSet(fromElement, true, toElement, false)
。
NavigableSet<E>
中的 subSet
SortedSet<E>
中的 subSet
fromElement
- 返回 set 的低端點(包括)toElement
- 返回 set 的高端點(不包括)
ClassCastException
- 如果無法使用此 set 的比較器(如果 set 沒有比較器,則使用自然順序)比較 fromElement 和 toElement。如果 fromElement 或 toElement 不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 fromElement
或 toElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果 fromElement 大於 toElement;如果此 set 本身有範圍限制,並且 fromElement 或 toElement 位於範圍的邊界之外public SortedSet<E> headSet(E toElement)
NavigableSet
複製的描述如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。
等效於 headSet(toElement, false)
。
NavigableSet<E>
中的 headSet
SortedSet<E>
中的 headSet
toElement
- 返回 set 的高端點(不包括)
ClassCastException
- 如果 toElement 與此 set 的比較器不相容(如果 set 沒有比較器;如果 toElement 沒有實作 Comparable
)。如果 toElement 不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 toElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果此 set 本身有範圍限制,並且 toElement 位於範圍的邊界之外public SortedSet<E> tailSet(E fromElement)
NavigableSet
複製的描述如果試圖在返回 set 的範圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。
等效於 tailSet(fromElement, true)
。
NavigableSet<E>
中的 tailSet
SortedSet<E>
中的 tailSet
fromElement
- 返回 set 的低端點(包括)
ClassCastException
- 如果 fromElement 與此 set 的比較器不相容(如果 set 沒有比較器;如果 fromElement 沒有實作 Comparable
)。如果 fromElement 不能與 set 中的當前元素進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException
- 如果 fromElement
為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素
IllegalArgumentException
- 如果此 set 本身有範圍限制,並且 fromElement 位於範圍的邊界之外public Comparator<? super E> comparator()
SortedSet
複製的描述
SortedSet<E>
中的 comparator
public E first()
SortedSet
複製的描述
SortedSet<E>
中的 first
NoSuchElementException
- 如果此 set 為空public E last()
SortedSet
複製的描述
SortedSet<E>
中的 last
NoSuchElementException
- 如果此 set 為空public E lower(E e)
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 lower
e
- 要比對的值
e
的最大元素;如果不存在這樣的元素,則返回 null
ClassCastException
- 如果指定元素不能與 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public E floor(E e)
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 floor
e
- 要比對的值
e
的最大元素;如果不存在這樣的元素,則返回 null
ClassCastException
- 如果指定元素不能與 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public E ceiling(E e)
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 ceiling
e
- 要比對的值
e
的最小元素;如果不存在這樣的元素,則返回 null
ClassCastException
- 如果指定元素不能與 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public E higher(E e)
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 higher
e
- 要比對的值
e
的最小元素;如果不存在這樣的元素,則返回 null
ClassCastException
- 如果指定元素不能與 set 中的當前元素進行比較
NullPointerException
- 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素public E pollFirst()
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 pollFirst
null
public E pollLast()
NavigableSet
複製的描述null
。
NavigableSet<E>
中的 pollLast
null
public Object clone()
TreeSet
實例的淺表副本。(這些元素本身不被複製。)
Object
中的 clone
Cloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。