java基礎(chǔ)知識-Java中的集合

知識點(diǎn):

java中分為數(shù)組和集合兩大類欣尼,這兩個容器都是可以存儲數(shù)據(jù)的方法

數(shù)組和集合的區(qū)別:(1)數(shù)組長度不可變化而且無法保存具有映射關(guān)系的數(shù)據(jù)秩冈;集合類用于保存數(shù)量不確定的數(shù)據(jù)盏浙,以及保存具有映射關(guān)系的數(shù)據(jù)昼浦。(2)數(shù)組元素既可以是基本類型的值吞加,也可以是對象问麸;集合只能保存對象疗杉。

Java集合類主要由兩個接口Collection和Map阵谚。

Collection接口派生出來的常用集合有:

(主要)ArrayList、LinkedList

(次要)HashSet烟具、TreeSet梢什、Vector(過去式)

Map接口派生出來的常用集合有:

(主要)HashMap

(次要)TreeMap

簡要說明List、Set净赴、Map的區(qū)別

List集合:有序绳矩、可重復(fù)集合,集合中每個元素都有其對應(yīng)的順序索引玖翅。實(shí)現(xiàn)List接口的集合主要有:ArrayList翼馆、LinkedList、Vector金度。

Set集合:有序应媚,不可重復(fù)集合,重復(fù)元素會覆蓋掉猜极。實(shí)現(xiàn)Set接口的集合主要有:HashSet中姜、TreeSet。

Map集合:以鍵值對的方式存儲跟伏,元素?zé)o存入順序丢胚,元素不可重復(fù),重復(fù)元素會覆蓋掉受扳,key携龟、value都可以為null實(shí)現(xiàn)Map接口的集合主要有:HashMap、HashTable勘高、TreeMap峡蟋。


集合常見的面試題:

1. ArrayList和LinkedList有什么區(qū)別?

ArrayList 有序华望,可重復(fù)的集合表示蕊蝗,底層實(shí)現(xiàn)是一個數(shù)組 ? ?查找快增刪慢

LinkedList 有序,可重復(fù)的集合表示赖舟,底層實(shí)現(xiàn)是一個鏈表蓬戚,查找慢增刪快

ArrayList是數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是鏈表的數(shù)據(jù)結(jié)構(gòu)宾抓。

隨機(jī)訪問的時候碌更,ArrayList的效率比較高裕偿,因?yàn)長inkedList要移動指針,而ArrayList是基于索引(index)的數(shù)據(jù)結(jié)構(gòu)痛单,可以直接映射到嘿棘。

插入、刪除數(shù)據(jù)時旭绒,LinkedList的效率比較高鸟妙,因?yàn)锳rrayList要移動數(shù)據(jù)。

LinkedList比ArrayList開銷更大挥吵,因?yàn)長inkedList的節(jié)點(diǎn)除了存儲數(shù)據(jù)重父,還需要存儲引用。

2. ArrayList和Vector有什么區(qū)別忽匈?

ArrayList 非線程安全的

Vector 是線程安全的

3. HashMap和HashTable有什么區(qū)別房午?

線程安全性不同:HashMap非線程安全,HashTable線程安全

繼承的父類不同:Hashtable繼承自Dictionary類丹允,而HashMap繼承自AbstractMap類郭厌。但二者都實(shí)現(xiàn)了Map接口

key和value是否允許null值:Hashtable中,key和value都不允許出現(xiàn)null值

兩個遍歷方式的內(nèi)部實(shí)現(xiàn)上不同

4. ArrayList,Vector,LinkedList的存儲性能和特性

ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù)雕蔽,此數(shù)組元素數(shù)大于實(shí)際存儲的數(shù)據(jù)以便增加和插入元素折柠,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作批狐,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢扇售,Vector由于使用了synchronized方法線程安全,性能上比ArrayList差嚣艇。

而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲承冰,按序號索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,所以索引數(shù)據(jù)較慢食零,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可巷懈,所以插入速度較快。

5. HashMap的存儲結(jié)構(gòu)以及工作原理和什么時候擴(kuò)容

jdk1.7:Hashmap實(shí)際上是一個數(shù)組和鏈表的散列表 ?jdk1.8:當(dāng)鏈表中的元素超過了 8 個以后慌洪,會將鏈表轉(zhuǎn)換為紅黑樹

以鍵值對(key-value)的形式存儲元素的。HashMap需要一個hash函數(shù)凑保,它使用hashCode()和equals()方法來向集合/從集合添加和檢索元素冈爹。當(dāng)調(diào)用put()方法的時候,HashMap會計算key的hash值欧引,然后把鍵值對存儲在集合中合適的索引上频伤。如果key已經(jīng)存在了,value會被更新成新值芝此。HashMap的一些重要的特性是它的容量(capacity)憋肖,負(fù)載因子(loadfactor)和擴(kuò)容極限(thresholdresizing)

當(dāng)hashmap中的元素個數(shù)超過數(shù)組大小loadFactor(加載因子)時因痛,就會進(jìn)行數(shù)組擴(kuò)容,loadFactor的默認(rèn)值為0.75

6.Comparable和Comparator接口是干什么的岸更?列出它們的區(qū)別

Java提供了只包含一個compareTo()方法的Comparable接口鸵膏。這個方法可以個給兩個對象排序。具體來說怎炊,它返回負(fù)數(shù)谭企,0,正數(shù)來表明輸入對象小于评肆,等于债查,大于已經(jīng)存在的對象。Java提供了包含compare()和equals()兩個方法的Comparator接口瓜挽。compare()方法用來給兩個輸入?yún)?shù)排序盹廷,返回負(fù)數(shù),0久橙,正數(shù)表明第一個參數(shù)是小于俄占,等于,大于第二個參數(shù)剥汤。equals()方法需要一個對象作為參數(shù)颠放,它用來決定輸入?yún)?shù)是否和comparator相等。只有當(dāng)輸入?yún)?shù)也是一個comparator并且輸入?yún)?shù)和當(dāng)前comparator的排序結(jié)果是相同的時候吭敢,這個方法才返回true碰凶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鹿驼,隨后出現(xiàn)的幾起案子欲低,更是在濱河造成了極大的恐慌,老刑警劉巖畜晰,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砾莱,死亡現(xiàn)場離奇詭異,居然都是意外死亡凄鼻,警方通過查閱死者的電腦和手機(jī)腊瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來块蚌,“玉大人闰非,你說我怎么就攤上這事∏头叮” “怎么了财松?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我辆毡,道長菜秦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任舶掖,我火速辦了婚禮球昨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘访锻。我一直安慰自己褪尝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般吞杭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上璃谨,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音鲤妥,去河邊找鬼佳吞。 笑死,一個胖子當(dāng)著我的面吹牛棉安,可吹牛的內(nèi)容都是我干的底扳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼贡耽,長吁一口氣:“原來是場噩夢啊……” “哼衷模!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒲赂,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阱冶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滥嘴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體木蹬,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年若皱,在試婚紗的時候發(fā)現(xiàn)自己被綠了镊叁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡走触,死狀恐怖晦譬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饺汹,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布痰催,位于F島的核電站兜辞,受9級特大地震影響迎瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逸吵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一凶硅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扫皱,春花似錦足绅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至段多,卻和暖如春首量,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背进苍。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工加缘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人觉啊。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓拣宏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杠人。 傳聞我的和親對象是個殘疾皇子勋乾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容