TreeSet的简单介绍与使用方法

时间:2021-07-17
本文章向大家介绍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等方法。

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