(转)TreeSet简单介绍与使用方法
2017-09-03 15:39
411 查看
TreeSet简介
TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,java.io.Serializable接口。
一种基于
因为TreeSet继承了AbstractSet抽象类,所以它是一个set集合,可以被实例化,且具有set的属性和方法。
TreeSet是基于TreeMap实现的。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。这取决于使用的构造方法。
TreeSet的性能比HashSet差但是我们在需要排序的时候可以用TreeSet因为他是自然排序也就是升序下面是TreeSet实现代码这个类也似只能通过迭代器迭代元素
ps:TreeSet是有序的Set集合,因此支持add、remove、get等方法。
TreeSet继承关系
1、TreeSet继承于AbstractSet,并且实现了NavigableSet接口。
2、 TreeSet的本质是一个"有序的,并且没有重复元素"的集合,它是通过TreeMap实现的。TreeSet中含有一个"NavigableMap类型的成员变量"m,而m实际上是"TreeMap的实例"。
Iterator顺序遍历
for-each遍历HashSet
TreeSet不支持快速随机遍历,只能通过迭代器进行遍历!
下面的程序演示了几个支持此集合的方法︰
结果为:
TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,java.io.Serializable接口。
一种基于
TreeMap的
NavigableSet实现。
因为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 类的构造函数。
序号 | 构造函数的说明 |
---|---|
1 | TreeSet () 此构造函数构造空树集,将在根据其元素的自然顺序按升序排序。 |
2 | TreeSet (集合 c) 此构造函数生成树的集合,它包含的元素的集合 c。 |
3 | TreeSet (比较器 comp) 此构造函数构造一个空树集,将根据给定的比较器进行排序。 |
4 | TreeSet (SortedSet ss) 此构造函数生成包含给定 SortedSet 的元素 TreeSet |
TreeSet的方法总结:
修饰符和类型 | 方法和描述 |
---|---|
boolean | add(E e) 将指定的元素添加到这套,如果它已不存在。 |
boolean | addAll(Collection<? extends E> c) 在加入这一组指定的集合中添加的所有元素。 |
E | ceiling(E e) 返回最小的元素在这一组大于或等于给定的元素,则 null如果没有这样的元素。 |
void | clear() 从这一组中移除所有元素。 |
Object | clone() 返回此 TreeSet实例浅表副本。 |
Comparator<? super E> | comparator() 返回用于排序在这集,或空元素,如果这套使用自然排序其元素的比较。 |
boolean | contains(Object o) 如果此集合包含指定的元素,则返回 true。 |
Iterator<E> | descendingIterator() 返回迭代器中这套降序排序的元素。 |
NavigableSet<E> | descendingSet() 返回逆序视图中包含的元素这一套。 |
E | first() 返回第一个 (最低) 元素当前在这一套。 |
E | floor(E e) 返回的最大元素在这一组小于或等于 null如果没有这样的元素。 |
SortedSet<E> | headSet(E toElement) 返回其元素是严格小于toElement这套的部分视图. |
NavigableSet<E> | headSet(E toElement, boolean inclusive) 返回一个视图的这部分设置的元素都小于 (或等于,如果 inclusive是真的) toElement. |
E | higher(E e) 返回最小的元素在这套严格大于给定的元素,则 null如果没有这样的元素。 |
boolean | isEmpty() 如果此集不包含任何元素,则返回 true。 |
Iterator<E> | iterator() 返回迭代器中这套以升序排序的元素。 |
E | last() 在这套目前返回的最后一个 (最高) 的元素。 |
E | lower(E e) 在这一套严格的小于给定的元素,则 null返回的最大元素,如果没有这样的元素。 |
E | pollFirst() 检索和删除第一个 (最低) 元素,或如果此集合为空,则返回 null。 |
E | pollLast() 检索和删除的最后一个 (最高) 的元素,或如果此集合为空,则返回 null。 |
boolean | remove(Object o) 从这一组中移除指定的元素,如果它存在。 |
int | size() 在这套 (其基数) 中返回的元素的数目。 |
NavigableSet<E> | subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 返回此集的部分视图的元素范围从 fromElement到 toElement. |
SortedSet<E> | subSet(E fromElement, E toElement) 返回视图的部分的这一套的元素范围从fromElement,具有包容性,到toElement,独家。 |
SortedSet<E> | tailSet(E fromElement) 返回其元素是大于或等于fromElement这套的部分视图. |
NavigableSet<E> | tailSet(E fromElement, boolean inclusive) 返回其元素是大于 (或等于,如果 inclusive是真的) 这套的部分视图 fromElement. |
相关文章推荐
- file.src.rpm 使用方法的简单介绍
- 简单介绍数据岛使用方法
- Android MediaPlayer使用方法简单介绍
- Document对象的使用:hasChildNodes()方法,nodeName、nodeValue、nodeType的简单介绍
- SQL Server 桌面引擎”(也叫 MSDE 2000)使用方法的简单介绍。
- QT-Linguist使用方法简单介绍
- MyEclipse8.0与SVN版本工具集成及简单使用方法介绍
- linux file.src.rpm 使用方法的简单介绍
- Android MediaPlayer使用方法简单介绍
- Derby数据库简单介绍和使用方法
- Android MediaPlayer使用方法简单介绍---(setdatasource)
- CProgressCtrl 进度条控件的使用方法简单介绍
- 使用Java实现简单的server/client回显功能的方法介绍
- Android MediaPlayer使用方法简单介绍
- Android MediaPlayer使用方法简单介绍
- 使用Java实现简单的server/client回显功能的方法介绍
- 优化防火墙得力助手ipset介绍及简单使用方法
- QT-Linguist使用方法简单介绍
- 简单介绍使用MD5加密的方法
- Android MediaPlayer使用方法简单介绍