TreeSet簡(jiǎn)介
TreeSet 是一個(gè)有序的集合蚓再,它的作用是提供有序的Set集合塌衰。它繼承于AbstractSet抽象類阀湿,實(shí)現(xiàn)了NavigableSet<E>, Cloneable, java.io.Serializable接口兔仰。
TreeSet 繼承于AbstractSet判呕,所以它是一個(gè)Set集合倦踢,具有Set的屬性和方法。
TreeSet 實(shí)現(xiàn)了NavigableSet接口侠草,意味著它支持一系列的導(dǎo)航方法辱挥。比如查找與指定目標(biāo)最匹配項(xiàng)。
TreeSet 實(shí)現(xiàn)了Cloneable接口边涕,意味著它能被克隆晤碘。
TreeSet 實(shí)現(xiàn)了java.io.Serializable接口,意味著它支持序列化功蜓。
TreeSet是基于TreeMap實(shí)現(xiàn)的园爷。TreeSet中的元素支持2種排序方式:自然排序 或者 根據(jù)創(chuàng)建TreeSet 時(shí)提供的 Comparator 進(jìn)行排序。這取決于使用的構(gòu)造方法式撼。
TreeSet為基本操作(add童社、remove 和 contains)提供受保證的 log(n) 時(shí)間開(kāi)銷。
另外著隆,TreeSet是非同步的扰楼。 它的iterator 方法返回的迭代器是fail-fast的。
繼承關(guān)系
總結(jié):
(01) TreeSet實(shí)際上是TreeMap實(shí)現(xiàn)的美浦。當(dāng)我們構(gòu)造TreeSet時(shí)弦赖;若使用不帶參數(shù)的構(gòu)造函數(shù),則TreeSet的使用自然比較器浦辨;若用戶需要使用自定義的比較器蹬竖,則需要使用帶比較器的參數(shù)。
(02) TreeSet是非線程安全的流酬。
(03) TreeSet實(shí)現(xiàn)java.io.Serializable的方式币厕。當(dāng)寫入到輸出流時(shí),依次寫入“比較器芽腾、容量旦装、全部元素”;當(dāng)讀出輸入流時(shí)晦嵌,再依次讀取。