TreeSet和TreeMap都是ordered存儲(chǔ)結(jié)構(gòu)礼旅。而TreeSet又基于TreeMap來(lái)實(shí)現(xiàn)。
TreeSet
A NavigableSet implementation based on a TreeMap. The elements are ordered using their natural ordering, or by a Comparator provided at set creation time, depending on which constructor is used. This implementation provides guaranteed log(n) time cost for the basic operations (add, remove, and contains).
TreeSet和TreeMap的關(guān)系類似于HashSet和HashMap之間的關(guān)系洽洁。HashSet底層依賴于HashMap實(shí)現(xiàn)痘系,TreeSet底層則采用一個(gè)NavigableMap來(lái)保存TreeSet集合的元素。因?yàn)镹avigableMap只是一個(gè)interface饿自,因此底層依然是用TreeMap來(lái)包含Set集合中所有的元素汰翠。
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable {
...
}
時(shí)間復(fù)雜度
TreeMap和TreeSet在big O方面的時(shí)間復(fù)雜度是一樣的:
新增 - O(logn)
查詢 - O(logn)
刪除 - O(logn)
reference