TreeSet简单介绍与使用方法

  TreeSet简介

  TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,java.io.Serializable接口。

  一种基于TreeMapNavigableSet实现。

    因为TreeSet继承了AbstractSet抽象类,所以它是一个set集合,可以被实例化,且具有set的属性和方法。

  TreeSet是基于TreeMap实现的。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。

  TreeSet的性能比HashSet差但是我们在需要排序的时候可以用TreeSet因为他是自然排序也就是升序下面是TreeSet实现代码这个类也似只能通过迭代器迭代元素

  ps:TreeSet是有序的Set集合,因此支持add、remove、get等方法。

  TreeSet继承关系

 

java.lang.Object
   ↳     java.util.AbstractCollection<E>
         ↳     java.util.AbstractSet<E>
               ↳     java.util.TreeSet<E>

public class TreeSet<E> extends AbstractSet<E>        
    implements NavigableSet<E>, Cloneable, java.io.Serializable{}

 

1、TreeSet继承于AbstractSet,并且实现了NavigableSet接口。
2、 TreeSet的本质是一个"有序的,并且没有重复元素"的集合,它是通过TreeMap实现的。TreeSet中含有一个"NavigableMap类型的成员变量"m,而m实际上是"TreeMap的实例"。

 

TreeSet遍历方式

  Iterator顺序遍历

for(Iterator iter = set.iterator(); iter.hasNext(); ) { 
    iter.next();
}   

  Iterator顺序遍历

// 假设set是TreeSet对象
for(Iterator iter = set.descendingIterator(); iter.hasNext(); ) { 
    iter.next();
}

  for-each遍历HashSet

// 假设set是TreeSet对象,并且set中元素是String类型
String[] arr = (String[])set.toArray(new String[0]);
for (String str:arr)
    System.out.printf("for each : %s\n", str);

TreeSet不支持快速随机遍历,只能通过迭代器进行遍历

 

下面的程序演示了几个支持此集合的方法︰

 

 1 import java.util.*;
 2 public class TreeSetDemo {
 3    public static void main(String args[]) {
 4       // Create a tree set
 5       TreeSet ts = new TreeSet();
 6       // Add elements to the tree set
 7       ts.add("C");
 8       ts.add("A");
 9       ts.add("B");
10       ts.add("E");
11       ts.add("F");
12       ts.add("D");
13       System.out.println(ts);
14    }
15 }

 

 

结果为:

1 [A, B, C, D, E, F]

 

 

 

  下面是支持 TreeSet 类的构造函数。

序号构造函数的说明
1TreeSet ()

此构造函数构造空树集,将在根据其元素的自然顺序按升序排序。

2TreeSet (集合 c)

此构造函数生成树的集合,它包含的元素的集合 c。

3TreeSet (比较器 comp)

此构造函数构造一个空树集,将根据给定的比较器进行排序。

4TreeSet (SortedSet ss)

此构造函数生成包含给定 SortedSet 的元素 TreeSet

 

  TreeSet的方法总结:

修饰符和类型方法和描述
booleanadd(E e)

将指定的元素添加到这套,如果它已不存在。

booleanaddAll(Collection<? extends E> c)

在加入这一组指定的集合中添加的所有元素。

Eceiling(E e)

返回最小的元素在这一组大于或等于给定的元素,则null如果没有这样的元素。

voidclear()

从这一组中移除所有元素。

Objectclone()

返回此TreeSet实例浅表副本。

Comparator<? super E>comparator()

返回用于排序在这集,或空元素,如果这套使用自然排序其元素的比较。

booleancontains(Object o)

如果此集合包含指定的元素,则返回true 。

Iterator<E>descendingIterator()

返回迭代器中这套降序排序的元素。

NavigableSet<E>descendingSet()

返回逆序视图中包含的元素这一套。

Efirst()

返回第一个 (最低) 元素当前在这一套。

Efloor(E e)

返回的最大元素在这一组小于或等于null如果没有这样的元素。

SortedSet<E>headSet(E toElement)

返回其元素是严格小于toElement这套的部分视图.

NavigableSet<E>headSet(E toElement, boolean inclusive)

返回一个视图的这部分设置的元素都小于 (或等于,如果inclusive是真的) toElement.

Ehigher(E e)

返回最小的元素在这套严格大于给定的元素,则null如果没有这样的元素。

booleanisEmpty()

如果此集不包含任何元素,则返回true 。

Iterator<E>iterator()

返回迭代器中这套以升序排序的元素。

Elast()

在这套目前返回的最后一个 (最高) 的元素。

Elower(E e)

在这一套严格的小于给定的元素,则null返回的最大元素,如果没有这样的元素。

EpollFirst()

检索和删除第一个 (最低) 元素,或如果此集合为空,则返回null 。

EpollLast()

检索和删除的最后一个 (最高) 的元素,或如果此集合为空,则返回null 。

booleanremove(Object o)

从这一组中移除指定的元素,如果它存在。

intsize()

在这套 (其基数) 中返回的元素的数目。

NavigableSet<E>subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)

返回此集的部分视图的元素范围从fromElementtoElement.

SortedSet<E>subSet(E fromElement, E toElement)

返回视图的部分的这一套的元素范围从fromElement,具有包容性,到toElement,独家。

SortedSet<E>tailSet(E fromElement)

返回其元素是大于或等于fromElement这套的部分视图.

NavigableSet<E>tailSet(E fromElement, boolean inclusive)

返回其元素是大于 (或等于,如果inclusive是真的) 这套的部分视图fromElement.

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值