Java學(xué)習(xí)筆記20180405

今天繼續(xù)學(xué)習(xí)Java,這次的重點(diǎn)有兩部分。

第一部分我想說一下面向?qū)ο缶幊蹋∣OP)的三種設(shè)計(jì)思路,這也是前人總結(jié)出來的,分別是is-a, has-a以及l(fā)ike-a.

第二部分我想說一下List類的四種中的兩種,ArrayList和LinkedList.


1.面向?qū)ο蟮娜N設(shè)計(jì)思路

1.is-a,A is a B帆阳,說明B是父類,而A是子類资锰,A繼承B的關(guān)系。Inheritance筝野,對應(yīng)的Java關(guān)鍵字為Extends焕议。

2.has-a, A has a B, 說明A包含B, B是A的組成部分,是從屬關(guān)系籽慢,即類與類的對象的關(guān)系猫胁,明教與明教教徒的關(guān)系。

3.like-a, A like a B, A與B是和而不同的關(guān)系届惋,兩者是組合關(guān)系,Composition.

對于第一種關(guān)系拍埠,在昨天的學(xué)習(xí)筆記中我已經(jīng)提到械拍。而第二種關(guān)系迄损,則是掌握了Class并能新建對象氏捞,就基本能搞清楚了谒养。第三種組合關(guān)系苛败,我想舉栗(例)說明一下满葛。

先說為什么Java的設(shè)計(jì)者要搞一個這種關(guān)系径簿,因?yàn)槲覀冊谠O(shè)計(jì)程序時,經(jīng)常需要建立許多類嘀韧,然后再針對這些類設(shè)計(jì)它們的屬性以及方法篇亭。但萬物皆有聯(lián)系,難免會存在有一些屬性或是方法是某幾個類都需要用的情況锄贷,我就不高興再重新把這些屬性和方法重新敲一遍了译蒂,自己手累,IDE的編譯器也很累谊却,為了提高”程序復(fù)用“的效率柔昼,節(jié)約時間,我們通過使用組合的方式炎辨,換言之捕透,結(jié)盟的方式,我們就可以調(diào)用其他對象了碴萧。

就好像在三國赤壁之戰(zhàn)的時候乙嘀,蜀吳聯(lián)盟,諸葛亮就可以調(diào)用東吳水軍破喻。課程中給出的是電腦與電腦組件的調(diào)用關(guān)系虎谢,機(jī)箱,顯示器和主板均是單獨(dú)的類曹质,而電腦是組合后的類嘉冒,有時候需要調(diào)用顯示器來顯示某個字符,就需要調(diào)用顯示器的顯示方法(或是顯示函數(shù))咆繁。

我自己是改寫成了另一個例子讳推,House和Wall這兩類,House包含Wall玩般,然后調(diào)用Wall的設(shè)置壁紙顏色的方法银觅。截圖如下:


Wallo類的屬性和方法


Composition

可以看出,通過組合坏为,可以減少一些重復(fù)工作究驴,類似于Proficient中數(shù)據(jù)錄入方式為Database history,也是一種調(diào)用匀伏。

2.ArrayList和LinkedList

ArrayList是數(shù)組隊(duì)列洒忧,這個數(shù)組是一個動態(tài)數(shù)組,大小够颠,內(nèi)容都可以改變熙侍,它比較適合于需要在數(shù)據(jù)尾部增加/刪除元素的情況。

LinkedList是一個雙向鏈表,因?yàn)樗氖孜苍鼐怯赏粋€Header指向蛉抓,同時庆尘,每個元素還存儲了它前后2個元素的引用,即Previous和Next,但當(dāng)我們需要鏈表中增加/刪除元素時巷送,它需要從首/尾遍歷整個鏈表來找到相應(yīng)的位置驶忌。

因此,ArrayList適用于大量隨機(jī)訪問的情況笑跛,而LinkedList只適用于針對首尾位置的元素進(jìn)行訪問的情況付魔。

舉例來說,我需要根據(jù)路人甲的銀行卡號識別它是哪一個銀行的什么卡飞蹂,一般是卡號的前幾號几苍,這時需要使用ArrayList,一個ArrayList存放卡的前幾位晤柄,一個ArrayList存放相應(yīng)的銀行卡類型和名稱擦剑。這就相當(dāng)于一個對照表,當(dāng)需要增加時芥颈,我們在表格的最后增加即可惠勒。根據(jù)某一張卡進(jìn)行查詢時,因?yàn)椴樵兊慕Y(jié)果作在的位置是隨機(jī)的爬坑,所以用ArrayList纠屋。

而當(dāng)我需要維護(hù)一張實(shí)驗(yàn)單清單時,我覺得可以使用LinkedList盾计,因?yàn)樾伦缘膶?shí)驗(yàn)單只會出現(xiàn)在最后售担。

針對這兩種List舉例寫代碼,截圖如下:


ArrayList


LinkedList

明天請大家繼續(xù)關(guān)注署辉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末族铆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子哭尝,更是在濱河造成了極大的恐慌哥攘,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件材鹦,死亡現(xiàn)場離奇詭異逝淹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桶唐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門栅葡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尤泽,你說我怎么就攤上這事欣簇」媪常” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵醉蚁,是天一觀的道長燃辖。 經(jīng)常有香客問我鬼店,道長网棍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任妇智,我火速辦了婚禮滥玷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巍棱。我一直安慰自己惑畴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布航徙。 她就那樣靜靜地躺著如贷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪到踏。 梳的紋絲不亂的頭發(fā)上杠袱,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音窝稿,去河邊找鬼楣富。 笑死,一個胖子當(dāng)著我的面吹牛伴榔,可吹牛的內(nèi)容都是我干的纹蝴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼踪少,長吁一口氣:“原來是場噩夢啊……” “哼塘安!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起援奢,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兼犯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后萝究,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體免都,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年帆竹,在試婚紗的時候發(fā)現(xiàn)自己被綠了绕娘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡栽连,死狀恐怖险领,靈堂內(nèi)的尸體忽然破棺而出侨舆,到底是詐尸還是另有隱情,我是刑警寧澤绢陌,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布挨下,位于F島的核電站,受9級特大地震影響脐湾,放射性物質(zhì)發(fā)生泄漏臭笆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一秤掌、第九天 我趴在偏房一處隱蔽的房頂上張望愁铺。 院中可真熱鬧,春花似錦闻鉴、人聲如沸茵乱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓶竭。三九已至,卻和暖如春渠羞,著一層夾襖步出監(jiān)牢的瞬間斤贰,已是汗流浹背陌宿。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工侦铜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茫负,地道東北人疆导。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓太雨,卻偏偏與公主長得像租悄,于是被迫代替她去往敵國和親奕枝。 傳聞我的和親對象是個殘疾皇子朴沿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法雌芽,類相關(guān)的語法授艰,內(nèi)部類的語法,繼承相關(guān)的語法世落,異常的語法淮腾,線程的語...
    子非魚_t_閱讀 31,644評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,111評論 0 62
  • 面向?qū)ο笾饕槍γ嫦蜻^程屉佳。 面向過程的基本單元是函數(shù)谷朝。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,057評論 0 4
  • java集合中ArrayList與LinkedList比較作者 codercjg 在 9 一月 2015, 11:...
    codercjg閱讀 188評論 0 0
  • 00#前言學(xué)習(xí)JavaScript体箕,自然要用node js 搭一個后臺來順便可以學(xué)習(xí)MVC思想nodejs也僅是剛...
    小小小白菜呀閱讀 3,012評論 0 4