Java TreeSet示例
java treeset类是基于TreeMap的NavigableSet实现。元素或者由比较器排序,或者简单地按其自然顺序排序。就复杂性而言,此实现为所有基本操作(如add、remove、contains)提供了日志(n)时间开销
了解Java中的TreeSet有什么重要的
TreeSet实现SortedSet接口,这意味着不允许重复值。
无法在树集中插入异类对象,因为它不允许。它将在运行时抛出classCastException。
TreeSet类不保留元素的插入顺序,但元素按其键排序。
元素按升序排序并按树的顺序存储。
Java中TreeSet的局限性
值必须是可比较的,或者需要在构造函数中提供比较器
TreeSet中的构造函数
TreeSet():构造一个新的空树集,根据元素的自然顺序排序
TreeSet(集合<?extends E>c):构造一个包含指定集合中元素的新树集,并根据元素的自然顺序对其进行排序。
TreeSet(比较器<?super E>comparator):构造一个根据指定的comparator排序的空树集。
TreeSet(SortedSet<E>s):构造一个与指定集完全相同的新树集,包括元素的顺序。
TreeSet中的方法
voidadd(objecto):根据树集中的排序顺序添加指定的元素。不会添加重复项。
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中的元素排序的比较器。
有关所有方法的文档,可以访问Oracle官方文档页。
使用add()在树集中添加元素
语法: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.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: Elephant The 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? false Is '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: false Empty: 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: Elephant Tiger Lion
使用增强的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: Elephant Tiger Lion