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 和示例。