# Java 中的`TreeSet`类

> 原文： [https://beginnersbook.com/2013/12/treeset-class-in-java-with-example/](https://beginnersbook.com/2013/12/treeset-class-in-java-with-example/)

`TreeSet`类似于[`HashSet`](https://beginnersbook.com/2013/12/hashset-class-in-java-with-example/)，不同之处在于它按升序对元素进行排序，而`HashSet`不维护任何顺序。`TreeSet`允许`null`元素，但它不允许使用`HashSet`。像大多数其他集合类一样，这个类也没有同步，但它可以像这样明确地同步： `SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));`

在本教程中，我们将看到`TreeSet`示例以及`TreeSet`和其他类似集合类之间的区别。

## TreeSet 示例：

在这个例子中，我们有两个`TreeSet`（`TreeSet<String>`和`TreeSet<Integer>`）。我们已经随机地将值添加到它们中，但是我们得到的结果按升序排序。

```java
import java.util.TreeSet;
public class TreeSetExample {
     public static void main(String args[]) {
         // TreeSet of String Type
         TreeSet<String> tset = new TreeSet<String>();

         // Adding elements to TreeSet<String>
         tset.add("ABC");
         tset.add("String");
         tset.add("Test");
         tset.add("Pen");
         tset.add("Ink");
         tset.add("Jack");

         //Displaying TreeSet
         System.out.println(tset);

         // TreeSet of Integer Type
         TreeSet<Integer> tset2 = new TreeSet<Integer>();

         // Adding elements to TreeSet<Integer>
         tset2.add(88);
         tset2.add(7);
         tset2.add(101);
         tset2.add(0);
         tset2.add(3);
         tset2.add(222);
         System.out.println(tset2);
    }
 }
```

输出：您可以看到`TreeSet`已按隐式升序排序。

```java
[ABC, Ink, Jack, Pen, String, Test]
[0, 3, 7, 88, 101, 222]
```

#### `TreeSet`教程

*   [`HashSet` vs `TreeSet`](https://beginnersbook.com/2014/08/difference-between-hashset-and-treeset/)
*   [如何将`HashSet`转换为`TreeSet`](https://beginnersbook.com/2014/08/how-to-convert-a-hashset-to-a-treeset/)

#### 参考

*   [`TreeSet` java 文档](https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html)