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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。