Java TreeSet类是一个基于TreeMap的NavigableSet实现。 元素可以通过Comparator进行排序,也可以仅通过其自然排序进行排序。 在复杂度方面,此实现为所有基本操作(例如添加,删除,包含)提供了log(n)时间成本。

关于 Java 中的TreeSet的重要知识
TreeSet实现SortedSe接口,这意味着不允许重复值。- 异构对象不能插入
TreeSet中,因为它不允许这样做。 它将在运行时引发classCastException。 TreeSet类不保留元素的插入顺序,但是元素按其键排序。TreeSet中的元素以升序和排序顺序存储。
Java 中TreeSet的局限性
- 值必须是可比较的,或者需要在构造函数中提供比较器
TreeSet的简单说明

继承图
TreeSet中的构造方法
TreeSet():构造一个新的空树集,并根据其元素的自然顺序进行排序TreeSet(Collection<? extends E> c):构造一个新树集,该树集包含指定集合中的元素,并根据其元素的自然顺序对其进行排序。TreeSet(Comparator<? super E> comparator):构造一个空树集,该树集根据指定的比较器排序。TreeSet(SortedSet<E> s):构造一个与指定集合完全相同的新树集,包括元素的顺序。
TreeSet中的方法
void add(Object o):根据TreeSet中的某些排序顺序添加指定的元素。 不会添加重复项。void clear():从树集中删除所有元素。boolean contains(Object o):如果树集中存在给定元素,则返回true,否则返回false。Object first():返回树集中的第一个元素。Object last():返回树集中的最后一个元素。boolean isEmpty():如果树集不包含任何元素,则返回true,否则返回false。Object clone():返回树集的浅表副本。int size():返回树集中的元素数量。Iterator iterator():返回用于迭代树集元素的迭代器。Comparator comparator():返回用于对TreeSet中的元素进行排序的Comparator。
有关所有方法的文档,请访问 Oracle 官方文档页面。
使用add()在TreeSet中添加元素
语法:treeSet.add(Object o)
import java.io.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);}}
输出:
TreeSet: [Elephant, Tiger, Lion]
使用first()和last()获取TreeSet的第一个和最后一个元素
语法:
treeSet.first()
treeSet.last()
import java.io.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);System.out.println("The first element: " + animals.first());System.out.println("The last element: " + animals.last());}}
输出:
TreeSet: [Elephant, Tiger, Lion]The first element: ElephantThe last element: Lion
使用contains()检查元素是否在树集中
语法:treeSet.contains(Object element)
import java.io.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);System.out.println("Is 'Cat' in the tree set?" + animals.contains("Cat"));System.out.println("Is 'Lion' in the tree set?" + animals.contains("Lion"));}}
输出:
TreeSet: [Elephant, Tiger, Lion]Is 'Cat' in the tree set? falseIs 'Lion' in the tree set? true
使用remove()从树集中删除一个元素
语法:treeSet.remove(Object o)
import java.io.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);animals.remove("Lion");animals.remove("Elephant");System.out.println("TreeSet: " + animals);}}
输出:
TreeSet: [Elephant, Tiger, Lion]TreeSet: [Tiger]
使用size()获取树集中的元素数量
语法:treeSet.size()
import java.util.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);System.out.println("The size of the tree set is: " + animals.size());}}
输出:
TreeSet: [Elephant, Tiger, Lion]The size of the tree set is: 3
使用isEmpty()检查树集是否为空
语法:treeSet.isEmpty()
import java.util.*;import java.util.TreeSet;public class TreeSetExample {public static void main(String args[]){TreeSet<String> animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: " + animals);System.out.println("Empty: " + animals.isEmpty());animals.clear();System.out.println("Empty: " + animals.isEmpty());}}
输出:
TreeSet: [Elephant, Tiger, Lion]Empty: falseEmpty: true
使用Iterator()遍历树集
语法:
Iterator iterator = ts.iterator();while (iterator.hasNext())System.out.print(iterator.next());
import java.util.Iterator;import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args){TreeSet<String>animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");Iterator<String> iterator = animals.iterator();System.out.println("TreeSet: ");System.out.println();while (iterator.hasNext())System.out.print(iterator.next()+ "\n");}}
输出:
TreeSet:ElephantTigerLion
使用增强的for循环遍历树集
语法:
for (String animal : animals)System.out.print(animal);}
import java.util.Iterator;import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args){TreeSet<String>animals = new TreeSet<String>();animals.add("Elephant");animals.add("Tiger");animals.add("Lion");System.out.println("TreeSet: ");System.out.println();for (String animal : animals)System.out.print(animal + "\n");}}
输出:
TreeSet:ElephantTigerLion
