Java中的TreeSet

Java中的TreeSet

TreeSet提供了SortedSet接口的一种实现,该接口继承了Set接口。它的行为类似于简单的Set,但与之不同的是,它以排序的形式存储元素。以下是TreeSet的特点。

  • TreeSet使用树形数据结构进行存储。
  • 对象以升序的方式存储。但我们可以使用TreeSet.descendingIterator()方法迭代降序。
  • 访问和检索时间非常快,使TreeSet成为在排序格式下存储大量数据的优选。
  • TreeSet不使用hashCode()和equals()方法来比较它的元素。它使用compare()(或compareTo())方法来确定两个元素的相等性。

treeset类的重要方法:

  • boolean add(E e): 如果此set中不存在指定的元素,则将指定的元素添加到该set中。
  • E ceiling(E e): 如果存在大于或等于给定元素的最小元素,则此方法返回该set中最小的此类元素,否则返回null。
  • boolean contains(Object o): 如果此set包含指定的元素,则返回true。
  • E floor(E e): 如果存在小于或等于给定元素的最大元素,则此方法返回该set中最大的此类元素,否则返回null。
  • E pollFirst(): 检索并删除第一个(最低)元素,如果此set为空,则返回null。
  • E pollLast(): 检索并删除最后一个(最高)元素,如果此set为空,则返回null。
  • boolean remove(Object o): 如果存在指定的元素,则从该set中删除该元素。

以下是一个非常简单的TreeSet实现,包括TreeSet的排序、TreeSet中的迭代、检索第一个和最后一个元素以及删除元素。

// Java程序演示TreeSet集合的工作原理
import java.util.Iterator;
import java.util.TreeSet;
 
public class TreeSetExample
{
    public static void main(String[] args)
    {
        TreeSet<Integer> ts = new TreeSet<Integer>();
        ts.add(10);
        ts.add(61);
        ts.add(87);
        ts.add(39);
 
        Iterator<Integer> iterator = ts.iterator();
        System.out.print("Tree set data: ");
 
        //请注意,最大元素是87,会出现在最后面。
        while (iterator.hasNext())
            System.out.print(iterator.next() + " ");
        System.out.println();
 
        //检查treeSet是否为空。
        if (ts.isEmpty())
            System.out.print("Tree Set is empty.");
        else
            System.out.println("Tree Set size: " + ts.size());
 
        //获取集合中最小的元素
        System.out.println("First data: " + ts.first());
 
        //获取集合中最大的元素
        System.out.println("Last data: " + ts.last());
 
        //从集合中删除61。
        if (ts.remove(61))
            System.out.println("Data is removed from tree set");
        else
            System.out.println("Data doesn't exist!");
 
        System.out.print("Now the tree set contain: ");
        iterator = ts.iterator();
 
        //显示树集数据
        while (iterator.hasNext())
            System.out.print(iterator.next() + " ");
 
        System.out.println();
        System.out.println("Now the size of tree set: " +
                           ts.size());
 
        //删除全部
        ts.clear();
        if (ts.isEmpty())
            System.out.print("Tree Set is empty.");
        else
            System.out.println("Tree Set size: " + ts.size());
    }
}
Java

输出:

Tree set data: 10 39 61 87 

Tree Set size: 4

First data: 10

Last data: 87

Data is removed from tree set

现在树集包含: 10 39 87 

现在树集的大小: 3

Tree Set是空的。
Java

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册