Java編程學(xué)習(xí)常用數(shù)據(jù)結(jié)構(gòu)總結(jié)

Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言枣申。Java 技術(shù)具有卓越的通用性、高效性看杭、平臺(tái)移植性和安全性忠藤,廣泛應(yīng)用于PC、數(shù)據(jù)中心楼雹、游戲控制臺(tái)模孩、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)贮缅,同時(shí)擁有全球最大的開發(fā)者專業(yè)社群榨咐。

給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫(kù)-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

數(shù)據(jù)元素相互之間的關(guān)系稱為結(jié)構(gòu)。有四類基本結(jié)構(gòu):集合携悯、線性結(jié)構(gòu)祭芦、樹形結(jié)構(gòu)筷笨、圖狀結(jié)構(gòu);

集合結(jié)構(gòu):除了同屬于一種類型外憔鬼,別無(wú)其它關(guān)系

線性結(jié)構(gòu):元素之間存在一對(duì)一關(guān)系常見類型有: 數(shù)組,鏈表,隊(duì)列,棧,它們之間在操作上有所區(qū)別.例如:鏈表可在任意位置插入或刪除元素,而隊(duì)列在隊(duì)尾插入元素,隊(duì)頭刪除元素,棧只能在棧頂進(jìn)行插入,刪除操作.

樹形結(jié)構(gòu):元素之間存在一對(duì)多關(guān)系,常見類型有:樹(有許多特例:二叉樹、平衡二叉樹胃夏、查找樹等)

圖形結(jié)構(gòu):元素之間存在多對(duì)多關(guān)系,圖形結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)多個(gè)數(shù)可以任意

Java中有幾種常用的數(shù)據(jù)結(jié)構(gòu)轴或,主要分為Collection和Map兩個(gè)主要接口,而程序中最終使用的數(shù)據(jù)結(jié)構(gòu)是繼承自這些接口的數(shù)據(jù)結(jié)構(gòu)類仰禀。其主要關(guān)系:

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零照雁,五五四,六零七 】答恶,無(wú)論你是大牛還是小白饺蚊,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具悬嗓,很多干貨和技術(shù)資料分享污呼!

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零,五五四包竹,六零七 】燕酷,無(wú)論你是大牛還是小白籍凝,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具苗缩,很多干貨和技術(shù)資料分享饵蒂!

1、幾個(gè)常用類的區(qū)別:

1.ArrayList: 元素單個(gè)酱讶,效率高退盯,多用于查詢

2.Vector: 元素單個(gè),線程安全泻肯,多用于查詢

3.LinkedList:元素單個(gè)得问,多用于插入和刪除

4.HashMap: 元素成對(duì),元素可為空

5.HashTable: 元素成對(duì)软免,線程安全宫纬,元素不可為空

二、Vector膏萧、ArrayList和LinkedList

大多數(shù)情況下漓骚,從性能上來(lái)說(shuō)ArrayList最好,但是當(dāng)集合內(nèi)的元素需要頻繁插入榛泛、刪除時(shí)LinkedList會(huì)有比較好的表現(xiàn)蝌蹂,但是它們?nèi)齻€(gè)性能都比不上數(shù)組,另外Vector是線程同步的曹锨。所以:

如果能用數(shù)組的時(shí)候(元素類型固定孤个,數(shù)組長(zhǎng)度固定),請(qǐng)盡量使用數(shù)組來(lái)代替List沛简;

如果沒有頻繁的刪除插入操作齐鲤,又不用考慮多線程問(wèn)題,優(yōu)先選擇ArrayList椒楣;

如果在多線程條件下使用给郊,可以考慮Vector;

如果需要頻繁地刪除插入捧灰,LinkedList就有了用武之地淆九;

如果你什么都不知道,用ArrayList沒錯(cuò)毛俏。

三炭庙、Collections和Arrays

在 Java集合類框架里有兩個(gè)類叫做Collections(注意,不是Collection;涂堋)和Arrays焕蹄,這是JCF里面功能強(qiáng)大的工具,但初學(xué)者往往會(huì)忽視唧席。按JCF文檔的說(shuō)法擦盾,這兩個(gè)類提供了封裝器實(shí)現(xiàn)(Wrapper Implementations)嘲驾、數(shù)據(jù)結(jié)構(gòu)算法和數(shù)組相關(guān)的應(yīng)用。

想必大家不會(huì)忘記上面談到的“折半查找”迹卢、“排序”等經(jīng)典算法吧辽故,Collections類提供了豐富的靜態(tài)方法幫助我們輕松完成這些在數(shù)據(jù)結(jié)構(gòu)課上煩人的工作:

binarySearch:折半查找。

sort:排序腐碱,這里是一種類似于快速排序的方法誊垢,效率仍然是O(n * log n),但卻是一種穩(wěn)定的排序方法症见。

reverse:將線性表進(jìn)行逆序操作喂走,這個(gè)可是從前數(shù)據(jù)結(jié)構(gòu)的經(jīng)典考題哦!

rotate:以某個(gè)元素為軸心將線性表“旋轉(zhuǎn)”谋作。

swap:交換一個(gè)線性表中兩個(gè)元素的位置芋肠。

……

Collections還有一個(gè)重要功能就是“封裝器”(Wrapper),它提供了一些方法可以把一個(gè)集合轉(zhuǎn)換成一個(gè)特殊的集合遵蚜,如下:

unmodifiableXXX:轉(zhuǎn)換成只讀集合帖池,這里XXX代表六種基本集合接口:Collection、List吭净、Map睡汹、Set、SortedMap和SortedSet寂殉。如果你對(duì)只讀集合進(jìn)行插入刪除操作囚巴,將會(huì)拋出UnsupportedOperationException異常。

小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零友扰,五五四彤叉,六零七 】,無(wú)論你是大牛還是小白焕檬,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)姆坚!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享实愚!

synchronizedXXX:轉(zhuǎn)換成同步集合。

singleton:創(chuàng)建一個(gè)僅有一個(gè)元素的集合兔辅,這里singleton生成的是單元素Set腊敲,

singletonList和singletonMap分別生成單元素的List和Map。

空集:由Collections的靜態(tài)屬性EMPTY_SET维苔、EMPTY_LIST和EMPTY_MAP表示碰辅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市介时,隨后出現(xiàn)的幾起案子没宾,更是在濱河造成了極大的恐慌凌彬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件循衰,死亡現(xiàn)場(chǎng)離奇詭異铲敛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)会钝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門伐蒋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人迁酸,你說(shuō)我怎么就攤上這事先鱼。” “怎么了奸鬓?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵焙畔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我串远,道長(zhǎng)闹蒜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任抑淫,我火速辦了婚禮绷落,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘始苇。我一直安慰自己砌烁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布催式。 她就那樣靜靜地躺著函喉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荣月。 梳的紋絲不亂的頭發(fā)上管呵,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音哺窄,去河邊找鬼捐下。 笑死,一個(gè)胖子當(dāng)著我的面吹牛萌业,可吹牛的內(nèi)容都是我干的坷襟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼生年,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婴程!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起抱婉,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤档叔,失蹤者是張志新(化名)和其女友劉穎桌粉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衙四,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铃肯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了届搁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘薛。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卡睦,靈堂內(nèi)的尸體忽然破棺而出宴胧,到底是詐尸還是另有隱情,我是刑警寧澤表锻,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布恕齐,位于F島的核電站,受9級(jí)特大地震影響瞬逊,放射性物質(zhì)發(fā)生泄漏显歧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一确镊、第九天 我趴在偏房一處隱蔽的房頂上張望士骤。 院中可真熱鬧,春花似錦蕾域、人聲如沸拷肌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巨缘。三九已至,卻和暖如春采呐,著一層夾襖步出監(jiān)牢的瞬間若锁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工斧吐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留又固,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓会通,卻偏偏與公主長(zhǎng)得像口予,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涕侈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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