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等方法。
1、TreeSet继承于AbstractSet,并且实现了NavigableSet接口。
2、 TreeSet的本质是一个"有序的,并且没有重复元素"的集合,它是通过TreeMap实现的。TreeSet中含有一个"NavigableMap类型的成员变量"m,而m实际上是"TreeMap的实例"。
1 import java.util.*;
2
3 /**
4 * @desc TreeSet的遍历程序
5 *
6 * @author
7 * @email
8 */
9 public class TreeSetIteratorTest {
10
11 public static void main(String[] args) {
12 TreeSet set = new TreeSet();
13 set.add("aaa");
14 set.add("aaa");
15 set.add("bbb");
16 set.add("eee");
17 set.add("ddd");
18 set.add("ccc");
19
20 // 顺序遍历TreeSet
21 ascIteratorThroughIterator(set) ;
22 // 逆序遍历TreeSet
23 descIteratorThroughIterator(set);
24 // 通过for-each遍历TreeSet。不推荐!此方法需要先将Set转换为数组
25 foreachTreeSet(set);
26 }
27
28 // 顺序遍历TreeSet
29 public static void ascIteratorThroughIterator(TreeSet set) {
30 System.out.print("\n ---- Ascend Iterator ----\n");
31 for(Iterator iter = set.iterator(); iter.hasNext(); ) {
32 System.out.printf("asc : %s\n", iter.next());
33 }
34 }
35
36 // 逆序遍历TreeSet
37 public static void descIteratorThroughIterator(TreeSet set) {
38 System.out.printf("\n ---- Descend Iterator ----\n");
39 for(Iterator iter = set.descendingIterator(); iter.hasNext(); )
40 System.out.printf("desc : %s\n", (String)iter.next());
41 }
42
43 // 通过for-each遍历TreeSet。不推荐!此方法需要先将Set转换为数组
44 private static void foreachTreeSet(TreeSet set) {
45 System.out.printf("\n ---- For-each ----\n");
46 String[] arr = (String[])set.toArray(new String[0]);
47 for (String str:arr)
48 System.out.printf("for each : %s\n", str);
49 }
50 }
原文地址:https://www.cnblogs.com/drigon/p/15024693.html
- GET/POST/g和钩子函数(hook)
- cookie和session
- Python Flask模块
- Java直接内存与非直接内存性能测试
- Elasticsearch——multi termvectors的用法
- Elasticsearch增删改查 之 —— Delete删除
- Elasticsearch增删改查 之 —— Get查询
- 实现两个N*N矩阵的乘法,矩阵由一维数组表示
- Elasticsearch入门必备——ES中的字段类型以及常用属性
- C++容器与算法
- Effective c++ 小结
- Java程序员的日常—— Properties文件的读写
- Java程序员的日常——经验贴(纯干货)二
- Elasticsearch——使用_cat查看Elasticsearch状态
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法