博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TreeSet的用法
阅读量:6306 次
发布时间:2019-06-22

本文共 11333 字,大约阅读时间需要 37 分钟。

注意,此实现不是同步的。如果多个线程同时访问一个 TreeSet,而其中至少一个线程修改了该 set,那么它必须 外部同步。这一般是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 方法来“包装”该 set。此操作最好在创建时进行,以防止对 set 的意外非同步访问:

SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果从结构上对 set 进行修改,除非通过迭代器自身的 remove 方法,否则在其他任何时间以任何方式进行修改都将导致迭代器抛出 。因此,对于并发的修改,迭代器很快就完全失败,而不会冒着在将来不确定的时间发生不确定行为的风险。

注意,迭代器的快速失败行为无法得到保证,一般来说,存在不同步的并发修改时,不可能作出任何肯定的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测 bug。

此类是 的成员。

构造方法摘要
()
          构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
(<? extends > c)
          构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。
(<? super > comparator)
          构造一个新的空 TreeSet,它根据指定比较器进行排序。
(<> s)
          构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。
 
方法摘要
 boolean ( e)
          将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。
 boolean (<? extends > c)
          将指定 collection 中的所有元素添加到此 set 中。
  ( e)
          返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null
 void ()
          移除此 set 中的所有元素。
  ()
          返回 TreeSet 实例的浅表副本。
 <? super > ()
          返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的,则返回 null
 boolean ( o)
          如果此 set 包含指定的元素,则返回 true
 <> ()
          返回在此 set 元素上按降序进行迭代的迭代器。
 <> ()
          返回此 set 中所包含元素的逆序视图。
  ()
          返回此 set 中当前第一个(最低)元素。
  ( e)
          返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null
 <> ( toElement)
          返回此 set 的部分视图,其元素严格小于 toElement
 <> ( toElement, boolean inclusive)
          返回此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement
  ( e)
          返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null
 boolean ()
          如果此 set 不包含任何元素,则返回 true
 <> ()
          返回在此 set 中的元素上按升序进行迭代的迭代器。
  ()
          返回此 set 中当前最后一个(最高)元素。
  ( e)
          返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null
  ()
          获取并移除第一个(最低)元素;如果此 set 为空,则返回 null
  ()
          获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null
 boolean ( o)
          将指定的元素从 set 中移除(如果该元素存在于此 set 中)。
 int ()
          返回 set 中的元素数(set 的容量)。
 <> ( fromElement, boolean fromInclusive,  toElement, boolean toInclusive)
          返回此 set 的部分视图,其元素范围从 fromElementtoElement
 <> ( fromElement,  toElement)
          返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。
 <> ( fromElement)
          返回此 set 的部分视图,其元素大于等于 fromElement
 <> ( fromElement, boolean inclusive)
          返回此 set 的部分视图,其元素大于(或等于,如果 inclusive 为 true)fromElement
 
从类 java.util. 继承的方法
, ,
 
从类 java.util. 继承的方法
, , , ,
 
从类 java.lang. 继承的方法
, , , , , ,
 
从接口 java.util. 继承的方法
, , , , , ,
 

构造方法详细信息

TreeSet

public TreeSet()
构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。插入该 set 的所有元素都必须实现 接口。另外,所有这些元素都必须是
可互相比较的:对于 set 中的任意两个元素
e1
e2,执行
e1.compareTo(e2) 都不得抛出
ClassCastException。如果用户试图将违反此约束的元素添加到 set(例如,用户试图将字符串元素添加到其元素为整数的 set 中),则
add 调用将抛出
ClassCastException

TreeSet

public TreeSet(
 comparator)
构造一个新的空 TreeSet,它根据指定比较器进行排序。插入到该 set 的所有元素都必须能够由指定比较器进行
相互比较:对于 set 中的任意两个元素
e1
e2,执行
comparator.compare(e1, e2) 都不得抛出
ClassCastException。如果用户试图将违反此约束的元素添加到 set 中,则
add 调用将抛出
ClassCastException

参数:
comparator - 将用来对此 set 进行排序的比较器。如果该参数为
null,则使用元素的 。

TreeSet

public TreeSet(
 c)
构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的
自然顺序进行排序。插入该 set 的所有元素都必须实现 接口。另外,所有这些元素都必须是
可互相比较的:对于 set 中的任意两个元素
e1
e2,执行
e1.compareTo(e2) 都不得抛出
ClassCastException

参数:
c - 一个 collection,其元素将组成新的 set
抛出:
- 如果
c 中的元素不是 ,或者是不可相互比较的
- 如果指定 collection 为 null

TreeSet

public TreeSet(<> s)
构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。

参数:
s - 一个有序 set,其元素将组成新 set
抛出:
- 如果指定有序 set 为 null
方法详细信息

iterator

public <> iterator()
返回在此 set 中的元素上按升序进行迭代的迭代器。
指定者:
接口
<> 中的
指定者:
接口
<> 中的
指定者:
接口
<> 中的
指定者:
接口
<> 中的
指定者:
<> 中的
返回:
在此 set 中的元素上按升序进行迭代的迭代器

descendingIterator

public <> descendingIterator()
返回在此 set 元素上按降序进行迭代的迭代器。
指定者:
接口
<> 中的
返回:
在此 set 元素上按降序进行迭代的迭代器
从以下版本开始:
1.6

descendingSet

public <> descendingSet()
从接口 复制的描述
返回此 set 中所包含元素的逆序视图。降序 set 受此 set 的支持,因此对此 set 的更改将反映在降序 set 中,反之亦然。如果在对任一 set 进行迭代的同时修改了任一 set(通过迭代器自己的
remove 操作除外),则迭代结果是不确定的。

返回 set 的顺序等于 (comparator())。表达式 s.descendingSet().descendingSet() 返回的 s 视图基本等于 s

指定者:
接口
<> 中的
返回:
此 set 的逆序视图
从以下版本开始:
1.6

size

public int size()
返回 set 中的元素数(set 的容量)。
指定者:
接口
<> 中的
指定者:
接口
<> 中的
指定者:
<> 中的
返回:
此 set 中的元素数(set 的容量)

isEmpty

public boolean isEmpty()
如果此 set 不包含任何元素,则返回
true
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的
返回:
如果此 set 不包含任何元素,则返回
true

contains

public boolean contains( o)
如果此 set 包含指定的元素,则返回
true。更确切地讲,当且仅当此 set 包含满足
(o==null ? e==null : o.equals(e)) 的元素
e 时,返回
true
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的
参数:
o - 将检查是否包含在此 set 中的对象
返回:
如果此 set 包含指定元素,则返回
true
抛出:
- 如果指定对象无法与该 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素

add

public boolean add( e)
将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。更确切地讲,如果该 set 不包含满足
(e==null ? e2==null : e.equals(e2)) 的元素
e2,则将指定元素
e 添加到此 set 中。如果此 set 已经包含这样的元素,则该调用不改变此 set 并返回
false
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的
参数:
e - 要添加到此 set 的对象
返回:
如果此 set 尚未包含指定元素,则返回
true
抛出:
- 如果指定对象无法与此 set 的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素

remove

public boolean remove( o)
将指定的元素从 set 中移除(如果该元素存在于此 set 中)。更确切地讲,如果 set 中包含满足
(o==null ? e==null : o.equals(e)) 的元素
e,则移除一个这样的元素。如果此 set 包含这样的元素(或者此 set 由于调用而发生更改),则返回
true。(一旦调用返回,则此 set 不再包含这样的元素。)
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的
参数:
o - 将从此 set 中移除的对象(如果存在)
返回:
如果此 set 包含指定元素,则返回
true
抛出:
- 如果指定对象无法与该 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素

clear

public void clear()
移除此 set 中的所有元素。在此调用返回之后,set 将为空。
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的

addAll

public boolean addAll(
 c)
将指定 collection 中的所有元素添加到此 set 中。
指定者:
接口
<> 中的
指定者:
接口
<> 中的
覆盖:
<> 中的
参数:
c - 包含要添加到此 set 的元素的 collection
返回:
如果此 set 由于调用而发生更改,则返回
true
抛出:
- 如果提供的元素无法与 set 中的当前元素进行比较
- 如果指定 collection 为 null,或者任何元素为 null 并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
另请参见:

subSet

public <> subSet( fromElement,                              boolean fromInclusive,                               toElement,                              boolean toInclusive)
从接口 复制的描述
返回此 set 的部分视图,其元素范围从
fromElement
toElement。如果
fromElement
toElement 相等,则返回的 set 为空,除非
fromExclusive
toExclusive 都为 true。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

指定者:
接口
<> 中的
参数:
fromElement - 返回 set 的低端点
fromInclusive - 如果低端点要包含在返回的视图中,则为
true
toElement - 返回 set 的高端点
toInclusive - 如果高端点要包含在返回的视图中,则为
true
返回:
此 set 的部分视图,其元素范围从
fromElement(包括)到
toElement(不包括)
抛出:
- 如果不能使用此 set 的比较器或者使用自然顺序(如果 set 没有比较器)比较
fromElement
toElement。如果
fromElement
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
fromElement
toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果
fromElement 大于
toElement;如果此 set 本身有范围限制,并且
fromElement
toElement 位于范围的边界之外。
从以下版本开始:
1.6

headSet

public <> headSet( toElement,                               boolean inclusive)
从接口 复制的描述
返回此 set 的部分视图,其元素小于(或等于,如果
inclusive 为 true)
toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

指定者:
接口
<> 中的
参数:
toElement - 返回 set 的高端点
inclusive - 如果高端点要包含在返回的视图中,则为
true
返回:
此 set 的部分视图,其元素小于(或等于,如果
inclusive 为 true)
toElement
抛出:
- 如果
toElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果
toElement 没有实现 )。如果
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果此 set 本身有范围限制,并且
toElement 位于范围的边界之外
从以下版本开始:
1.6

tailSet

public <> tailSet( fromElement,                               boolean inclusive)
从接口 复制的描述
返回此 set 的部分视图,其元素大于(或等于,如果
inclusive 为 true)
fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

指定者:
接口
<> 中的
参数:
fromElement - 返回 set 的低端点
inclusive - 如果低端点要包含在返回的视图中,则为
true
返回:
此 set 的部分视图,其元素大于等于
fromElement
抛出:
- 如果
fromElement 与此 set 的比较器不兼容(如果 set 没有任何比较器;如果
fromElement 没有实现 )。如果
fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
fromElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果此 set 本身有范围限制,并且
fromElement 位于范围的边界之外
从以下版本开始:
1.6

subSet

public <> subSet( fromElement,                            toElement)
从接口 复制的描述
返回此 set 的部分视图,其元素从
fromElement(包括)到
toElement(不包括)。(如果
fromElement
toElement 相等,则返回空的 set)。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

等效于 subSet(fromElement, true, toElement, false)

指定者:
接口
<> 中的
指定者:
接口
<> 中的
参数:
fromElement - 返回 set 的低端点(包括)
toElement - 返回 set 的高端点(不包括)
返回:
此 set 的部分视图,其元素的范围从
fromElement(包括)到
toElement(不包括)
抛出:
- 如果无法使用此 set 的比较器(如果 set 没有比较器,则使用自然顺序)比较
fromElement
toElement。如果
fromElement
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
fromElement
toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果
fromElement 大于
toElement;如果此 set 本身有范围限制,并且
fromElement
toElement 位于范围的边界之外

headSet

public <> headSet( toElement)
从接口 复制的描述
返回此 set 的部分视图,其元素严格小于
toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

等效于 headSet(toElement, false)

指定者:
接口
<> 中的
指定者:
接口
<> 中的
参数:
toElement - 返回 set 的高端点(不包括)
返回:
此 set 的部分视图,其元素严格小于
toElement
抛出:
- 如果
toElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果
toElement 没有实现 )。如果
toElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
toElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果此 set 本身有范围限制,并且
toElement 位于范围的边界之外

tailSet

public <> tailSet( fromElement)
从接口 复制的描述
返回此 set 的部分视图,其元素大于等于
fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改将反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可选 set 操作。

如果试图在返回 set 的范围之外插入元素,则返回的 set 将抛出 IllegalArgumentException

等效于 tailSet(fromElement, true)

指定者:
接口
<> 中的
指定者:
接口
<> 中的
参数:
fromElement - 返回 set 的低端点(包括)
返回:
此 set 的部分视图,其元素大于等于
fromElement
抛出:
- 如果
fromElement 与此 set 的比较器不兼容(如果 set 没有比较器;如果
fromElement 没有实现 )。如果
fromElement 不能与 set 中的当前元素进行比较,则实现可以(但不是必须)抛出此异常。
- 如果
fromElement 为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
- 如果此 set 本身有范围限制,并且
fromElement 位于范围的边界之外

comparator

public 
comparator()
从接口 复制的描述
返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的 ,则返回
null
指定者:
接口
<> 中的
返回:
用来对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回
null

first

public  first()
从接口 复制的描述
返回此 set 中当前第一个(最低)元素。
指定者:
接口
<> 中的
返回:
此 set 中当前第一个(最低)元素
抛出:
- 如果此 set 为空

last

public  last()
从接口 复制的描述
返回此 set 中当前最后一个(最高)元素。
指定者:
接口
<> 中的
返回:
此 set 中当前最后一个(最高)元素
抛出:
- 如果此 set 为空

lower

public  lower( e)
从接口 复制的描述
返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回
null
指定者:
接口
<> 中的
参数:
e - 要匹配的值
返回:
小于
e 的最大元素;如果不存在这样的元素,则返回
null
抛出:
- 如果指定元素不能与 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
从以下版本开始:
1.6

floor

public  floor( e)
从接口 复制的描述
返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回
null
指定者:
接口
<> 中的
参数:
e - 要匹配的值
返回:
小于等于
e 的最大元素;如果不存在这样的元素,则返回
null
抛出:
- 如果指定元素不能与 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
从以下版本开始:
1.6

ceiling

public  ceiling( e)
从接口 复制的描述
返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回
null
指定者:
接口
<> 中的
参数:
e - 要匹配的值
返回:
大于等于
e 的最小元素;如果不存在这样的元素,则返回
null
抛出:
- 如果指定元素不能与 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
从以下版本开始:
1.6

higher

public  higher( e)
从接口 复制的描述
返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回
null
指定者:
接口
<> 中的
参数:
e - 要匹配的值
返回:
大于
e 的最小元素;如果不存在这样的元素,则返回
null
抛出:
- 如果指定元素不能与 set 中的当前元素进行比较
- 如果指定元素为 null,并且此 set 使用自然顺序,或者其比较器不允许使用 null 元素
从以下版本开始:
1.6

pollFirst

public  pollFirst()
从接口 复制的描述
获取并移除第一个(最低)元素;如果此 set 为空,则返回
null
指定者:
接口
<> 中的
返回:
第一个元素;如果此 set 为空,则返回
null
从以下版本开始:
1.6

pollLast

public  pollLast()
从接口 复制的描述
获取并移除最后一个(最高)元素;如果此 set 为空,则返回
null
指定者:
接口
<> 中的
返回:
最后一个元素;如果此 set 为空,则返回
null
从以下版本开始:
1.6

clone

public  clone()
返回
TreeSet 实例的浅表副本。(这些元素本身不被复制。)
覆盖:
中的
返回:
此 set 的浅表副本
另请参见:

转载于:https://www.cnblogs.com/chaoyu/p/6436986.html

你可能感兴趣的文章
Box2D自定义重力
查看>>
chpasswd
查看>>
mysqldump --single-transaction 和--lock-tables参数详解
查看>>
android 数据库_sql语句总结
查看>>
python购物车
查看>>
解决python2和python3的pip冲突
查看>>
面试/编程
查看>>
linux每日命令(16):head命令
查看>>
公司内部分享【富有成效的每日站会】总结
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
iOS横竖屏
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>