set集合繼承了collection類(lèi),他是無(wú)序的不重復(fù)的。與collection的相似程度最高,其衍生的hashSet與其稍微有點(diǎn)差異,其具體的體現(xiàn)是.
hashSet
1.無(wú)序
2.線(xiàn)程不同步
3.存儲(chǔ)值可以是null
hashSet的元素存儲(chǔ)過(guò)程中還有一個(gè)hashcode,對(duì)于每個(gè)被添加入HashSet的元素,會(huì)通過(guò)他的hashcode選擇一個(gè)位置存放他,如果在集合里有一個(gè)元素的equal()方法和他返回值一樣,但是hashcode的返回值不一樣,那么則將他們放置在不同的位置,這一點(diǎn)和我們的set集合的定義有所沖突。所以使用hashset時(shí)候基本上需要重寫(xiě)他的hashcode和equal方法。
linkedHashSet
可以線(xiàn)性的將元素保存入我們的集合,元素的順序永遠(yuǎn)和我們添加的順序相同。性能略低于hashSet。
treeSet
可以自主的調(diào)用compareTo(Object obj)的方法將集合進(jìn)行排序,與此同時(shí)我們也知道,如果想調(diào)用我們的compareTo()的方法,那么相比較的的元素必須是同一類(lèi)型,也就是說(shuō),當(dāng)我們希望正常的使用我們的treeSet集合的時(shí)候,我們向集合插入的元素必須是同一類(lèi)型的;其一些方法如下
