TreeSet簡單介紹與使用方法


  TreeSet簡介

  TreeSet是JAVA中集合的一種,TreeSet 是一個有序的集合,它的作用是提供有序的Set集合。它繼承於AbstractSet抽象類,實現了NavigableSet<E>,Cloneable,java.io.Serializable接口。

  一種基於TreeMapNavigableSet實現。

    因為TreeSet繼承了AbstractSet抽象類,所以它是一個set集合,可以被實例化,且具有set的屬性和方法。

  TreeSet是基於TreeMap實現的。TreeSet中的元素支持2種排序方式:自然排序 或者 根據創建TreeSet 時提供的 Comparator 進行排序。這取決於使用的構造方法。

  TreeSet的性能比HashSet差但是我們在需要排序的時候可以用TreeSet因為他是自然排序也就是升序下面是TreeSet實現代碼這個類也似只能通過迭代器迭代元素

  ps:TreeSet是有序的Set集合,因此支持add、remove、get等方法。

  TreeSet繼承關系

java.lang.Object
   ↳     java.util.AbstractCollection<E>
         ↳     java.util.AbstractSet<E>
               ↳     java.util.TreeSet<E>

public class TreeSet<E> extends AbstractSet<E>        
    implements NavigableSet<E>, Cloneable, java.io.Serializable{}

1、TreeSet繼承於AbstractSet,並且實現了NavigableSet接口。
2、 TreeSet的本質是一個"有序的,並且沒有重復元素"的集合,它是通過TreeMap實現的。TreeSet中含有一個"NavigableMap類型的成員變量"m,而m實際上是"TreeMap的實例"。

 

TreeSet遍歷方式

  Iterator順序遍歷

for(Iterator iter = set.iterator(); iter.hasNext(); ) { 
    iter.next();
}   

  Iterator順序遍歷

// 假設set是TreeSet對象
for(Iterator iter = set.descendingIterator(); iter.hasNext(); ) { 
    iter.next();
}

  for-each遍歷HashSet

// 假設set是TreeSet對象,並且set中元素是String類型
String[] arr = (String[])set.toArray(new String[0]);
for (String str:arr)
    System.out.printf("for each : %s\n", str);

TreeSet不支持快速隨機遍歷,只能通過迭代器進行遍歷!

 

下面的程序演示了幾個支持此集合的方法︰

 1 import java.util.*;
 2 public class TreeSetDemo {
 3    public static void main(String args[]) {
 4       // Create a tree set
 5       TreeSet ts = new TreeSet();
 6       // Add elements to the tree set
 7       ts.add("C");
 8       ts.add("A");
 9       ts.add("B");
10       ts.add("E");
11       ts.add("F");
12       ts.add("D");
13       System.out.println(ts);
14    }
15 }

 

結果為:

1 [A, B, C, D, E, F]

 

 

 

  下面是支持 TreeSet 類的構造函數。

序號 構造函數的說明
1 TreeSet ()

此構造函數構造空樹集,將在根據其元素的自然順序按升序排序。

2 TreeSet (集合 c)

此構造函數生成樹的集合,它包含的元素的集合 c。

3 TreeSet (比較器 comp)

此構造函數構造一個空樹集,將根據給定的比較器進行排序。

4 TreeSet (SortedSet ss)

此構造函數生成包含給定 SortedSet 的元素 TreeSet

 

  TreeSet的方法總結:

修飾符和類型 方法和描述
boolean add(E e)
將指定的元素添加到這套,如果它已不存在。
boolean addAll(Collection<? extends E> c)
在加入這一組指定的集合中添加的所有元素。
E ceiling(E e)
返回最小的元素在這一組大於或等於給定的元素,則 null如果沒有這樣的元素。
void clear()
從這一組中移除所有元素。
Object clone()
返回此 TreeSet實例淺表副本。
Comparator<? super E> comparator()
返回用於排序在這集,或 元素,如果這套使用自然排序其元素的比較。
boolean contains(Object o)
如果此集合包含指定的元素,則返回 true 。
Iterator<E> descendingIterator()
返回迭代器中這套降序排序的元素。
NavigableSet<E> descendingSet()
返回逆序視圖中包含的元素這一套。
E first()
返回第一個 (最低) 元素當前在這一套。
E floor(E e)
返回的最大元素在這一組小於或等於 null如果沒有這樣的元素。
SortedSet<E> headSet(E toElement)
返回其元素是嚴格小於toElement這套的部分視圖.
NavigableSet<E> headSet(E toElement, boolean inclusive)
返回一個視圖的這部分設置的元素都小於 (或等於,如果inclusive是真的) toElement.
E higher(E e)
返回最小的元素在這套嚴格大於給定的元素,則 null如果沒有這樣的元素。
boolean isEmpty()
如果此集不包含任何元素,則返回 true 。
Iterator<E> iterator()
返回迭代器中這套以升序排序的元素。
E last()
在這套目前返回的最后一個 (最高) 的元素。
E lower(E e)
在這一套嚴格的小於給定的元素,則 null返回的最大元素,如果沒有這樣的元素。
E pollFirst()
檢索和刪除第一個 (最低) 元素,或如果此集合為空,則返回 null 。
E pollLast()
檢索和刪除的最后一個 (最高) 的元素,或如果此集合為空,則返回 null 。
boolean remove(Object o)
從這一組中移除指定的元素,如果它存在。
int size()
在這套 (其基數) 中返回的元素的數目。
NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回此集的部分視圖的元素范圍從fromElementtoElement.
SortedSet<E> subSet(E fromElement, E toElement)
返回視圖的部分的這一套的元素范圍從 fromElement,具有包容性,到 toElement,獨家。
SortedSet<E> tailSet(E fromElement)
返回其元素是大於或等於fromElement這套的部分視圖.
NavigableSet<E> tailSet(E fromElement, boolean inclusive)
返回其元素是大於 (或等於,如果inclusive是真的) 這套的部分視圖fromElement.

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM