Java 集合框架TreeSet
原文:https://www.studytonight.com/java/treeset-in-collection-framework.php
用于以升序存储唯一元素的 TreeSet 类。它类似于 HashSet ,只是它按照升序对元素进行排序,而 HashSet 不维护任何顺序。
Java TreeSet 类实现 Set 接口,使用基于树的数据结构存储。它扩展了AbstractSet
类并实现了导航集接口。该类的声明如下。
TreeSet
类声明
public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>, Cloneable, Serializable
要点
- 它以升序存储元素。
- 它使用树形结构来存储元素。
- 它只包含像 HashSet 这样的独特元素。
- 它的存取和检索时间相当快。
- 它不允许空元素。
- 它是非同步的。
TreeSet
合构造器
TreeSet()
TreeSet( Collection C )
TreeSet( Comparator comp )
TreeSet( SortedSet ss )
示例:创建TreeSet
让我们创建一个存储字符串元素的TreeSet
。这里的集合是空的,因为我们没有给它添加元素。
import java.util.*;
class Demo
{
public static void main(String[] args)
{
// Creating an TreeSet
TreeSet< String> fruits = new TreeSet< String>();
// Displaying TreeSet
System.out.println(fruits);
}
}
[]
TreeSet
方法
| 方法 | 描述 |
| boolean add(E) | 如果指定的元素不存在,它会将该元素添加到该集合中。 |
| 布尔地址(集合 extends E> c) | 它将指定集合中的所有元素添加到该集合中。 |
| 上限 | 它返回集合中指定元素的相等或最接近的最大元素,如果没有这样的元素,则返回 null。 |
| Comparator
super E>Comparator
() | 它返回按顺序排列元素的Comparator
。 |
| 迭代器后代迭代器() | 它用于按降序迭代元素。 |
| 导航集下降集() | 它以相反的顺序返回元素。 |
| 东楼 | 它返回集合中指定元素的相等或最接近的最小元素,如果没有这样的元素,则返回 null。 |
| sortedset 耳机(E toElement) | 它返回小于指定元素的元素组。 |
| 导航设置耳机(E toElement,含布尔值) | 它返回小于或等于指定元素的元素组(如果为真,则为包含)。 |
| 更高 | 它返回集合中指定元素最接近的最大元素,如果没有这样的元素,则返回 null。 |
| 迭代器迭代器() | 它用于以升序迭代元素。 |
| 更低 | 它从集合中返回指定元素中最接近的最小元素,如果没有这样的元素,则返回 null。 |
| 第一次民意测验 | 它用于检索和移除最低(第一个)元素。 |
| 和 pollLast() | 它用于检索和移除最高(最后)元素。 |
| 拆分器拆分器() | 它用于在元素上创建后期绑定和故障快速拆分器。 |
| 导航集合子集(从元素,布尔从包含,从元素,布尔到包含) | 它返回一组位于给定范围之间的元素。 |
| 排序集合子集(从元素到元素) | 它返回一组位于给定范围内的元素,包括 fromElement 和排除 toElement。 |
| 排序集尾集 | 它返回一组大于或等于指定元素的元素。 |
| 导航集尾集(E fromElement,含布尔值) | 它返回一组大于或等于指定元素的元素(如果为真,则为包含)。 |
| 布尔包含(对象 0) | 如果该集合包含指定的元素,则返回 true。 |
| boolean isEmpty() | 如果该集合不包含任何元素,则返回 true。 |
| 布尔删除(对象 0) | 它用于从该集合中移除指定的元素(如果存在)。 |
| 清空() | 它用于从此集合中移除所有元素。 |
| 对象克隆() | 它返回这个 TreeSet 实例的一个浅拷贝。 |
| e 第一次() | 它返回当前排序集中的第一个(最低的)元素。 |
| e 最后() | 它返回当前排序集中的最后一个(最高的)元素。 |
| int 大小() | 它返回该集合中的元素数量。 |
向TreeSet
中添加元素
让我们举一个例子来创建一个包含重复元素的TreeSet
。但是您可以注意到它打印独特的元素,这意味着它不允许重复的元素。
import java.util.*;
class Demo{
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 itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
Ajay Ravi Vijay
从TreeSet
中移除元素
我们可以用这个类的remove()
方法去掉元素。见下面的例子。
import java.util.*;
class Demo{
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 itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
al.remove("Ravi");
System.out.println("After Removing: "+al);
}
}
移除后的 Ajay Ravi Vijay:[Ajay,Vijay]
在TreeSet
中搜索元素
TreeSet 提供了contains()
方法,如果集合中存在元素,则该方法为真。
import java.util.*;
class Demo{
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 itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
boolean iscontain = al.contains("Ravi");
System.out.println("Is contain Ravi: "+iscontain);
}
}
阿杰·拉维·维贾伊是遏制拉维:真的
以升序和降序遍历TreeSet
我们可以按升序和降序遍历TreeSet
合的元素。TreeSet 提供descendingIterator()
方法,返回迭代器类型进行降序遍历。见下面的例子。
import java.util.*;
class Demo{
public static void main(String args[]){
TreeSet<String> al = new TreeSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
System.out.println("Ascending...");
Iterator itr=al.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
System.out.println("Descending...");
Iterator itr2=al.descendingIterator();
while(itr2.hasNext()){
System.out.println(itr2.next());
}
}
}
上升的...Ajay Ravi Vijay 下行...Vijay Ravi Ajay