文章图片
Java TreeSet类实现了Set接口, 该接口使用树进行存储。它继承了AbstractSet类并实现了NavigableSet接口。 TreeSet类的对象以升序存储。
关于Java TreeSet类的要点是:
- Java TreeSet类仅包含唯一元素, 例如HashSet。
- Java TreeSet类的访问和检索时间非常安静。
- Java TreeSet类不允许使用null元素。
- Java TreeSet类不同步。
- Java TreeSet类维护升序。
如上图所示, Java TreeSet类实现了NavigableSet接口。 NavigableSet接口按层次结构顺序扩展了SortedSet, Set, Collection和Iterable接口。
TreeSet类声明
【Java TreeSet类】让我们看看java.util.TreeSet类的声明。
public class TreeSet<
E>
extends AbstractSet<
E>
implements NavigableSet<
E>
, Cloneable, Serializable
Java TreeSet类的构造方法
建设者 | 描述 |
---|---|
TreeSet() | 它用于构造一个空树集, 该树集将根据树集的自然顺序以升序排序。 |
TreeSet(Collection < ?扩展E> c) | 它用于构建包含集合c的元素的新树集。 |
TreeSet(Comparator < ?super E> 比较器) | 它用于构造一个空树集, 该树集将根据给定的比较器进行排序。 |
TreeSet(SortedSet< E> s) | 它用于构建包含给定SortedSet元素的TreeSet。 |
方法 | 描述 |
---|---|
boolean add(E e) | 如果指定的元素尚不存在, 则用于将其添加到此集合中。 |
布尔addAll(Collection < ?扩展E> c) | 它用于将指定集合中的所有元素添加到该集合中。 |
E ceiling(E e) | 它从集合中返回指定元素的等于或最接近的最大元素, 如果没有, 则返回null。 |
比较器< ?超级E> 比较器() | 它返回按顺序排列元素的比较器。 |
Iterator
|
它用于按降序迭代元素。 |
NavigableSet
|
它以相反的顺序返回元素。 |
E floor(E e) | 它从集合中返回指定元素的等于或最接近的最小元素, 如果没有, 则返回null。 |
SortedSet
|
它返回小于指定元素的元素组。 |
NavigableSet
|
它返回小于或等于(如果包含, 则为true)指定元素的元素组。 |
E higher(E e) | 它从集合中返回指定元素中最接近的最大元素, 如果没有, 则返回null。 |
Iterator
|
它用于按升序迭代元素。 |
E lower(E e) | 它返回集合中指定元素的最接近的最小元素, 如果没有, 则返回null。 |
E pollFirst() | 它用于检索和删除最低(第一个)元素。 |
E pollLast() | 它用于检索和删除最高(最后)元素。 |
Spliterator
|
它用于在元素上创建后绑定和故障快速拆分器。 |
NavigableSet
|
它返回位于给定范围之间的一组元素。 |
SortedSet subSet(E fromElement, E toElement)) | 它返回位于给定范围(包括fromElement和不包括toElement)之间的一组元素。 |
SortedSet
|
它返回一组大于或等于指定元素的元素。 |
NavigableSet
|
它返回一组大于或等于(如果包含, 则为真)指定元素的元素。 |
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示例1:
让我们看一个简单的Java TreeSet示例。
import java.util.*;
class TreeSet1{
public static void main(String args[]){
//Creating and adding elements
TreeSet<
String>
al=new TreeSet<
String>
();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
//Traversing elements
Iterator<
String>
itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
立即测试
输出:
Ajay
Ravi
Vijay
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:
让我们看一个示例来检索和删除最高和最低价值。
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类是可比较的。要在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>
();
//Creating Books
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);
//Adding Books to TreeSet
set.add(b1);
set.add(b2);
set.add(b3);
//Traversing TreeSet
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
推荐阅读
- Java中的Properties类
- Java TreeMap类
- Java队列接口
- Java Map接口
- Java列表接口
- Java LinkedList类
- 电脑上的OpenAL是什么(卸载OpenAL是否安全?提示和指南)
- Windows 10中的Chrome书签存储在哪里(详细指南)
- 跟踪IP地址的14款最佳IP地址跟踪器软件推荐合集