Java TreeSet
TreeSet提供了一个SortedSet接口的实现,SortedSet扩展了Set接口。它的行为类似于简单的集合,不同的是它以排序的形式存储元素。以下是TreeSet的特点。
- TreeSet使用树形数据结构进行存储。
- 对象是以排序后的升序存储的。但是我们可以使用TreeSet.descendingIterator()方法进行降序迭代。
- 访问和检索的时间非常快,这使得TreeSet成为以排序格式存储大量数据的最佳选择。
- TreeSet不使用hashCode()和equals()方法来比较它的元素。它使用compare()(或compareTo())方法来确定两个元素的相等。
treeset类的重要方法
- boolean add(E e): 如果指定的元素还没有出现,该方法将其添加到这个集合中。
- E ceiling(E e): 这个方法返回这个集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回空。
- boolean contains(Object o): 如果这个集合包含指定的元素,该方法返回true。
- E floor(E e): 该方法返回这个集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。
- E pollFirst(): 这个方法检索并删除第一个(最低)元素,如果这个集合是空的,则返回null。
- E pollLast() : 这个方法检索并删除最后一个(最高)元素,如果这个集合是空的,则返回null。
- boolean remove(Object o): 这个方法从这个集合中删除指定的元素,如果它是存在的。
下面是一个非常简单的TreeSet实现,包括TreeSet的排序,TreeSet中的迭代,检索第一个和最后一个元素,以及删除一个元素。
// 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<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: ");
// 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.
极客教程