集合存放的是物件的引用,而非物件本身,我們稱集合中的物件就是集合中的引用,簡單的說,集合中存放的是引用型別的資料。集合分為兩種型別,單列集合和雙列集合,即collection集合和map集合。
collection是單列集合的根介面,它的實現類有list和set,雖然說list和set也是屬於conllection,但是他們也各有千秋,下面我們一起來對比來他們的特點吧。
特點:三有,即有索引,有可以重複的元素,讀取資料有順序。
實現類:vector、arraylist、linklist
vector:底層是可增長的陣列,因而就有增刪慢和查詢快的特點,是最早的集合,誕生於jdk1.0,它是執行緒安全的,但是執行效率慢。索引被之後的arraylist取代。
arraylist
:底層同樣也是陣列,和vector一樣,開闢的空間是連續的,增刪慢,查詢快,但是既然arraylist能夠取代vector,一直延續至今,必須有它的優點,那就是執行緒不安全,執行速度快。
linkedlist
:底層是鍊錶,這個就和arraylist有了區別,既然是鍊錶實現,它開闢的空間是不連續的,這樣帶來的好處就是:增刪快,查詢慢,同樣linkedlist也是執行緒不安全的,執行效率高。
大家一定有這樣乙個疑問:增刪快慢和查詢快慢是如何確定的呢?
增刪:對於arraylist是增刪慢的,因為它是底層是陣列,資料長度是固定的,如果陣列已滿,想要再新增乙個元素的話,那麼就需要將這個陣列進行複製乙份,成為乙個新的陣列,然後增加;退一步說,如果陣列不滿,那麼想在i
索引處新增或者是刪除乙個元素,那麼i+1之後的元素都是需要移動的,這樣就浪費了時間。而對於linkedlist來說,想要刪除或者增加i元素,只需要修改i前後元素的指標就可以了。
查詢:對於arraylist只要給乙個索引就可以取出相應位置的;而對於linkedlist呢,需要乙個個進行遍歷,根據上乙個指標找到下乙個指標……這樣時間自然就比arraylist長了。
特點:三無,即無索引,不可存放重複元素,讀取資料順序和儲存順序不一致(有自己特定的順序)。執行緒是不安全的,執行效率高。
hashset
:實現了set介面,有雜湊表支援(實質是hashmap)可以存放null元素。
linkedhashset:
是具體可預知順序的集合,基於雜湊表的鍊錶實現,
treeset:
是有序的二叉樹,提供有序的set集合。
特點:雙列集合的根介面,,鍵不可以重複,值可以重複,乙個鍵只能對應乙個值,是無序的,鍵值成對出現。
hashtable
:map介面的實現類,底層是雜湊表,執行緒安全效率低,命運和vector一樣,不允許存放null的鍵和值,jdk1.2被取代,但hashtable的子類properties,沿用至今,和io結合,可以把資料變成持久的。
hashmap:取代hashtable,儲存元素應該保證鍵唯一,可以存放現有類和自定義類,如果是自定義類要重寫hashcode和equals方法。
linkedhashmap:繼承hashmap,方法類似,和linkedhashset有相似之處,可以保證迭代的順序性。
treemap
:也是有序的二叉樹,是的在其中儲存的元素能夠有序,按照特定的順序輸出。
這些是對集合特點的總結,每種集合都有自己的特性,要根據具體問題使用合適的集合,這樣才能起到事半功倍的作用。當然只了解一些理論知識,絕不能解決細節,還需要理論聯絡實際。
大聚會 CSS選擇器
偽類選擇器 鏈結偽類選擇器 重點 在css中,乙個星號 就是乙個通配選擇器.它可以匹配任意型別的html元素.用html標籤名稱作為選擇器,按標籤名稱分類,為頁面中某一類標籤指定統一的css樣式。使用 英文點號 進行標識,後面緊跟類名。和標籤內的class屬性搭配使用。使用 進行標識,後面緊跟id名...
畢業2月有餘,蘇州同學腐敗第二次大聚會
繼上次腐敗大會我,大邊,歌星,阿虫,張立成,張學豐,喝酒啃雞腿後,我們覺得此活動有益身心,延年益壽,故於公元2004年9月26日再次召開.於會者莫不開懷痛飲.至酒足飯飽方才摸肚子而歸.我,大邊,歌星,張玉平,張學豐,張學豐mm,張立成.只缺了乙個吳美娟.有這麼多男生在,酒自是少不了.於是海侃神吹.看...
AHOI2008 緊急集合 聚會
歡樂島上有個非常好玩的遊戲,叫做 緊急集合 在島上分散有n個等待點,有n 1條道路連線著它們,每一條道路都連線某兩個等待點,且通過這些道路可以走遍所有的等待點,通過道路從乙個點到另乙個點要花費乙個遊戲幣。參加遊戲的人三人一組,開始的時候,所有人員均任意分散在各個等待點上 每個點同時允許多個人等待 每...