TreeSet 是可导航 sub-interface 的实现之一。它的底层数据结构是 red-black tree 。元素按升序存储,与 SortedSet 相比,TreeSet 中提供了更多方法。我们还可以使用 Comparator 更改排序参数。例如,Comparator 在设置创建时提供,具体取决于使用哪个构造函数。
- 它还实现NavigableSet接口。
- NavigableSet 扩展了SortedSet 和Set 接口。
示例
Java
// Java Program to Illustrate TreeSet
// Importing required classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String args[]) {
// Creating an empty TreeSet of string type elements
TreeSet<String> al = new TreeSet<String>();
// Adding elements
// using add() method
al.add("Welcome");
al.add("to");
al.add("Geeks for Geeks");
// Traversing elements via help of iterators
Iterator<String> itr = al.iterator();
// Holds true until there is element remaining in object
while (itr.hasNext()) {
// Moving onto next element with help of next() method
System.out.println(itr.next());
}
}
}
Geeks for Geeks Welcome to
Sorted Set
SortedSet 是sub-interface,可在扩展Set 接口的java.util.package 中使用。该接口包含从Set接口继承的方法。例如,headSet、tailSet、subSet、Comparator、first、last 等等。
示例
Java
// Java program to Illustrate SortedSet
// Importing utility classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an instance of SortedSet
// String type
SortedSet<String> ts = new TreeSet<String>();
// Adding elements into the TreeSet
// using add()
ts.add("Sravan");
ts.add("Ojaswi");
ts.add("Bobby");
ts.add("Rohith");
ts.add("Gnanesh");
ts.add("Devi2");
// Adding the duplicate element
// again simply using add() method
ts.add("Sravan");
// Print and display TreeSet
System.out.println(ts);
// Removing items from TreeSet
// using remove() method
ts.remove("Ojaswi");
// Display message
System.out.println("Iterating over set:");
// Iterating over TreeSet items
Iterator<String> i = ts.iterator();
// Condition holds true till there is single element
// remaining in the object
while (i.hasNext())
// Printing elements
System.out.println(i.next());
}
}
[Bobby, Devi2, Gnanesh, Ojaswi, Rohith, Sravan] Iterating over set: Bobby Devi2 Gnanesh Rohith Sravan
现在,在对TreeSet和SortedSet有了充分的了解和内部工作原理之后,现在让我们看看TreeSet和SortedSet之间的区别,如下表所示:
基础 |
TreeSet |
SortedSet |
---|---|---|
分类 | NavigableSet sub-interface 类。 | Sub-Interface |
广告订单 | TreeSet 按排序顺序维护一个对象。 | SortedSet 按排序顺序维护一个对象。 |
初始化 |
用法: TreeSet<数据类型> treeset = new TreeSet<>(); |
用法: 它无法实例化,因为它是sub-Interface。 |
方法 | 包含比 SortedSet 更多的方法。 | 包含的方法比 TreeSet 少。 |
示例 | 包含SortSet的所有方法。另外还有 ceiling()、floor()、higher()、lower() 等方法 | 包含add()、addAll()、iterator()、retainAll() 等方法 |
Conclusion: Basically in simple words let’s assume this way, TreeSet is a class of NavigableSet which contains all of the methods for better traversing and searching for values. SortedSet is a sub-set of NavigableSet in terms of methods compare to TreeSet(NavigableSet)
相关用法
- Java TreeSet Spliterator()用法及代码示例
- Java TreeSet add()用法及代码示例
- Java TreeSet addAll()用法及代码示例
- Java TreeSet ceiling()用法及代码示例
- Java TreeSet clear()用法及代码示例
- Java TreeSet clone()用法及代码示例
- Java TreeSet comparator()用法及代码示例
- Java TreeSet contains()用法及代码示例
- Java TreeSet containsAll()用法及代码示例
- Java TreeSet descendingIterator()用法及代码示例
- Java TreeSet descendingSet()用法及代码示例
- Java TreeSet equals()用法及代码示例
- Java TreeSet first()用法及代码示例
- Java TreeSet floor()用法及代码示例
- Java TreeSet hashCode()用法及代码示例
- Java TreeSet headSet()用法及代码示例
- Java TreeSet higher()用法及代码示例
- Java TreeSet isEmpty()用法及代码示例
- Java TreeSet iterator()用法及代码示例
- Java TreeSet last()用法及代码示例
- Java TreeSet lower()用法及代码示例
- Java TreeSet pollFirst()用法及代码示例
- Java TreeSet pollLast()用法及代码示例
- Java TreeSet remove()用法及代码示例
- Java TreeSet removeAll()用法及代码示例
注:本文由纯净天空筛选整理自sravankumar_171fa07058大神的英文原创作品 Difference Between TreeSet and SortedSet in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。