📜  Java中的树集

📅  最后修改于: 2022-05-13 01:55:31.510000             🧑  作者: Mango

Java中的树集

TreeSet 提供了 SortedSet 接口的实现,而 SortedSet 扩展了 Set 接口。它的行为类似于简单集合,不同之处在于它以排序格式存储元素。以下是 TreeSet 的特点。

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

树集类的重要方法:

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

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

Java
// Java program to demonstrate working TreeSet collection
import java.util.Iterator;
import java.util.TreeSet;
 
public class TreeSetExample
{
    public static void main(String[] args)
    {
        TreeSet ts = new TreeSet();
        ts.add(10);
        ts.add(61);
        ts.add(87);
        ts.add(39);
 
        Iterator iterator = ts.iterator();
        System.out.print("Tree set data: ");
 
        // note that 87 being largest element, appears in
        // the last.
        while (iterator.hasNext())
            System.out.print(iterator.next() + " ");
        System.out.println();
 
        // to check if treeset is empty or not.
        if (ts.isEmpty())
            System.out.print("Tree Set is empty.");
        else
            System.out.println("Tree Set size: " + ts.size());
 
        // To get the smallest element from the set
        System.out.println("First data: " + ts.first());
 
        // To get the largest value from set
        System.out.println("Last data: " + ts.last());
 
        // remove 61 from set.
        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();
 
        // Displaying the Tree set data
        while (iterator.hasNext())
            System.out.print(iterator.next() + " ");
 
        System.out.println();
        System.out.println("Now the size of tree set: " +
                           ts.size());
 
        // Remove all
        ts.clear();
        if (ts.isEmpty())
            System.out.print("Tree Set is empty.");
        else
            System.out.println("Tree Set size: " + ts.size());
    }
}


输出:

Tree set data: 10 39 61 87 

Tree Set size: 4

First data: 10

Last data: 87

Data is removed from tree set

Now the tree set contain: 10 39 87 

Now the size of tree set: 3

Tree Set is empty.

有关详细信息,请参阅Java中的 TreeSet 和示例