Java TreeSet类实现了Set接口,该接口使用树进行存储。它继承了AbstractSet类并实现了NavigableSet接口。 TreeSet类的对象以升序存储。
如上图所示,Java TreeSet类实现了NavigableSet接口。 NavigableSet接口按层次结构顺序扩展了SortedSet,Set,Collection和Iterable接口。
方法 |
说明 |
boolean add(E e) |
用于将指定的元素添加到此集中(如果尚不存在)。 |
boolean addAll(Collection<? extends E> c) |
用于将指定集合中的所有元素添加到该集合中。 |
E ceiling(E e) |
它从集合中返回指定元素的等于或最接近的最大元素,如果没有,则返回null。 |
Comparator<? super E> comparator() |
它返回按顺序排列元素的比较器。 |
Iterator descendingIterator()
|
用于按降序迭代元素。 |
NavigableSet descendingSet()
|
它以相反的顺序返回元素。 |
E floor(E e) |
它返回集合中指定元素的等于或最接近的最小元素,如果没有,则返回null。 |
SortedSet headSet(E toElement)
|
它返回小于指定元素的元素组。 |
NavigableSet headSet(E toElement, boolean inclusive)
|
它返回小于或等于指定元素的元素组。(如果包含,则为true)。 |
E high(E e) |
它返回集合中指定元素中最接近的最大元素,如果没有,则返回null。 |
Iterator iterator()
|
用于按升序迭代元素。 |
E lower(E e) |
它返回集合中指定元素中最接近的最小元素,或者为null,则没有这样的元素。 |
E pollFirst() |
它用于检索和删除最低(第一个)元素。 |
E pollLast() |
它用于检索和删除最高(最后)元素。 |
Spliterator spliterator()
|
它用于在元素上创建后绑定和故障快速拆分器。 |
NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
|
它返回位于给定范围之间的一组元素。 |
SortedSet subSet(E fromElement, E toElement))
|
它返回位于给定范围之间的一组元素,该范围包括fromElement和不包括toElement。 |
SortedSet tailSet(E fromElement)
|
它返回一组大于或等于指定元素的元素。 |
NavigableSet tailSet(E fromElement, boolean inclusive)
|
它返回一组大于或等于(如果包含,则为真)指定元素的元素。 |
boolean contains(Object o) |
如果此集合包含指定的元素,则返回true。 |
boolean isEmpty() |
如果此集合不包含任何元素,则返回true。 |
boolean remove(Object o) |
用于从该集中删除指定的元素(如果存在)。 |
void clear() |
它用于删除此集合中的所有元素。 |
Object clone() |
它返回此TreeSet实例的浅表副本。 |
E first() |
它将返回此排序集中当前的第一个(最低)元素。 |
E last() |
它返回当前在此排序集中的最后一个(最高)元素。 |
int size() |
它返回此集合中的元素数。 |
我们来看一个简单的Java TreeSet示例。>
import java.util.*;
class TreeSet1{
public static void main(String args[]){
TreeSet<String> al=new TreeSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
Iterator<String> itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
输出:
Java TreeSet示例2:
让我们看一个按降序遍历元素的示例。
import java.util.*;
class TreeSet2{
public static void main(String args[]){
TreeSet<String> set=new TreeSet<String>();
set.add("Ravi");
set.add("Vijay");
set.add("Ajay");
System.out.println("Traversing element through Iterator in descending order");
Iterator i=set.descendingIterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
输出:
Traversing element through Iterator in descending order
Vijay
Ravi
Ajay
Traversing element through NavigableSet in descending order
Vijay
Ravi
Ajay
Java TreeSet示例3:
让我们看一个示例,该示例检索并删除最高和最低Value。
import java.util.*;
class TreeSet3{
public static void main(String args[]){
TreeSet<Integer> set=new TreeSet<Integer>();
set.add(24);
set.add(66);
set.add(12);
set.add(15);
System.out.println("Highest Value: "+set.pollFirst());
System.out.println("Lowest Value: "+set.pollLast());
}
}
输出:
Highest Value: 12
Lowest Value: 66
Java TreeSet示例4:
在此示例中,我们执行各种NavigableSet操作。
import java.util.*;
class TreeSet4{
public static void main(String args[]){
TreeSet<String> set=new TreeSet<String>();
set.add("A");
set.add("B");
set.add("C");
set.add("D");
set.add("E");
System.out.println("Initial Set: "+set);
System.out.println("Reverse Set: "+set.descendingSet());
System.out.println("Head Set: "+set.headSet("C", true));
System.out.println("SubSet: "+set.subSet("A", false, "E", true));
System.out.println("TailSet: "+set.tailSet("C", false));
}
}
输出:
Initial Set: [A, B, C, D, E]
Reverse Set: [E, D, C, B, A]
Head Set: [A, B, C]
SubSet: [B, C, D, E]
TailSet: [D, E]
Java TreeSet示例4:
在此示例中,我们执行各种SortedSetSet操作。
import java.util.*;
class TreeSet4{
public static void main(String args[]){
TreeSet<String> set=new TreeSet<String>();
set.add("A");
set.add("B");
set.add("C");
set.add("D");
set.add("E");
System.out.println("Intial Set: "+set);
System.out.println("Head Set: "+set.headSet("C"));
System.out.println("SubSet: "+set.subSet("A", "E"));
System.out.println("TailSet: "+set.tailSet("C"));
}
}
输出:
Intial Set: [A, B, C, D, E]
Head Set: [A, B]
SubSet: [A, B, C, D]
TailSet: [C, D, E]
Java TreeSet示例: 书籍
让我们看一个TreeSet示例,我们在其中添加书籍以进行设置并打印所有书籍。 TreeSet中的元素必须为Comparable类型。默认情况下,String和Wrapper类是Comparable的。要在TreeSet中添加用户定义的对象,您需要实现Comparable接口。
import java.util.*;
class Book implements Comparable<
Book>
{
int id;
String name,author,publisher;
int quantity;
public Book(int id, String name, String author, String publisher, int quantity) {
this.id = id;
this.name = name;
this.author = author;
this.publisher = publisher;
this.quantity = quantity;
}
public int compareTo(Book b) {
if(id>b.id){
return 1;
}
else if(id<b.id){
return -1;
}
else{
return 0;
}
}
}
public class TreeSetExample {
public static void main(String[] args) {
Set<
Book>
set=new TreeSet<
Book>
();
Book b1=new Book(121,"Let us C","Yashwant Kanetkar","BPB",8);
Book b2=new Book(233,"Operating System","Galvin","Wiley",6);
Book b3=new Book(101,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);
TreeSet set.add(b1);
set.add(b2);
set.add(b3);
for(Book b:set){
System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
}
}
}
输出:
101 Data Communications & Networking Forouzan Mc Graw Hill 4
121 Let us C Yashwant Kanetkar BPB 8
233 Operating System Galvin Wiley 6