2022-07-14 day 20

一诵次、泛型方法

1师倔、聲明語(yǔ)法

傳遞方法的泛型參數(shù):調(diào)用的時(shí)候傳遞泛型參數(shù)

變量.< 實(shí)際的泛型類型>方法名();

方法中聲明的泛型只能在當(dāng)前方法中使用

類聲明的泛型在整個(gè)類中都能用

每次調(diào)用方法都可以確定不一樣的類型

二西傀、聲明受限制的泛型

受限泛型類

class 類名< T extends 類型>

{

}

受限泛型方法

public < T extends 類型> 返回值 方法名稱(){

}

傳遞泛型參數(shù)的時(shí)候T必須是父類型或者是它的子類型

三酪术、泛型通配符

在聲明范型類的變量時(shí)可以使用通配符惩妇,在創(chuàng)建對(duì)象中不可以使用通配符普筹。

1恤磷、聲明的時(shí)候直接寫面哼?

2、使用通配符限制上界:<? extends 上界類型>

示例: 右邊的<>中的類型必須是Number或者Number的子類型

List<? extends Number> list=new ArrayList();

List<? extends Object> list=new ArrayList();

不可以調(diào)用傳遞范型參數(shù)的方法扫步。

調(diào)用帶泛型返回值的方法魔策,返回值按照上界類型對(duì)待

在聲明變量的時(shí)候使用,可以對(duì)該變量接收的對(duì)象的類型中的泛型信息做一些限制,但是又有一定靈活性

3河胎、<? super 下界類型>

右邊的<>中的類型必須是Number或者Number的父類型或者實(shí)現(xiàn)的接口類型

可以調(diào)用傳遞范型參數(shù)的方法,參數(shù)按照下界類型來(lái)對(duì)待了

調(diào)用帶泛型返回值的方法闯袒,返回值全部按照Object對(duì)待了

四、泛型擦除

1游岳、概念 Java的泛型是偽泛型政敢,這是因?yàn)镴ava在編譯期間,類中聲明的胚迫、接口中聲明的喷户、方法中聲明的所

有的泛型信息都會(huì)被擦掉,在這些類生成的字節(jié)碼文件中的正文中是不包含泛型信息访锻,這個(gè)過程成為泛

型擦除褪尝,泛型擦除之后闹获,原來(lái)在源文件中使用泛型類型的地方在字節(jié)碼文件中會(huì)替換為Object,如果聲

明的時(shí)候聲明的受限制的泛型河哑,那么字節(jié)碼文件中會(huì)替換為限制類型避诽。

2、泛型擦除的時(shí)間點(diǎn):發(fā)生在編譯期間

編譯器首先檢查類型安全—————————》進(jìn)行編譯擦除泛型信息———————-》字節(jié)碼文件中

就沒有泛型信息(Object)

3璃谨、泛型擦除的一些問題

1)因?yàn)榇嬖诜盒筒脸陈苑瓷錂C(jī)制可以破壞泛型的特性。睬罗,比如創(chuàng)建Person類型對(duì)象的時(shí)候確定了

Person類的T為String.,使用反射機(jī)制調(diào)用setPersonId方法缺可以放置其它類型轨功,因?yàn)樽止?jié)碼文件中的

setPersonId方法的參數(shù)為Object類型

2)因?yàn)榇嬖诜盒筒脸苑椒ㄖ貙懙臅r(shí)候會(huì)有沖突容达,但是JAVA語(yǔ)言已經(jīng)想辦法解決這個(gè)沖突古涧,就是

使用橋方會(huì)在子類或者實(shí)現(xiàn)類的字節(jié)碼文件中生成一個(gè)和父類同名同參的橋方法,在此橋方法中花盐,調(diào)用

了我們自己在源文件中重寫的方法

3)傳遞泛型參數(shù)的時(shí)候不能傳遞八中基本數(shù)據(jù)類型

4)Instanceof運(yùn)算符后面的類型不能傳遞泛型參數(shù)羡滑,只能寫原始類型、

五算芯、泛型使用注意事項(xiàng)

1柒昏、不能將靜態(tài)屬性聲明為泛型類型

2、不能在靜態(tài)方法中使用類聲明的泛型類型

3熙揍、不能創(chuàng)建泛型數(shù)組:new T[10],寫法錯(cuò)誤

4职祷、使用Instanceof運(yùn)算符比較的時(shí)候,類型不能包含泛型信息届囚,因?yàn)橛蟹盒筒脸?/p>

5有梆、傳遞泛型參數(shù)的時(shí)候不能使用8種基本數(shù)據(jù)類型

六、層次結(jié)構(gòu)

1意系、Collection:以單個(gè)元素為單位進(jìn)行存放

List:有序集合泥耀,每個(gè)元素都有一個(gè)和存入順序吻合的索引編號(hào),并且蛔添,我們可以依靠位置編號(hào)對(duì)

集合中的元素進(jìn)行操作

ArrayList:實(shí)現(xiàn)類

LinkedList

Vector

Set:無(wú)序集合痰催,每個(gè)元素沒有位置編號(hào),程序員也不能用位置編號(hào)對(duì)集合中的元素進(jìn)行操作迎瞧,不

能存入重復(fù)值

HashSet

LinkedHashSet

TreeSet

2夸溶、Map:以鍵值對(duì)為單位進(jìn)行存放HashMap

LinkedHashMap

TreeMap

Hashtable

七、Collection

存放若干個(gè)獨(dú)立元素

增加操作

?boolean add(Object element) :增加一個(gè)元素

?boolean addAll(Collection collection) :將集合中的所有元素進(jìn)行增加

移除操作

?boolean remove(Object element) :移除一個(gè)元素凶硅,依靠equals方法進(jìn)行 比對(duì)蜘醋。注意。你的元素類型

有沒有重寫equals方法咏尝,如果有重寫压语,那就調(diào)用重寫過的equals啸罢,沒有重寫,調(diào)用Object類的equals

void clear() :清空所有元素

?void removeAll(Collection collection):將在集合中的元素移除胎食, 依靠equals方法進(jìn)行 比對(duì)

?void retainAll(Collection collection) :將不在集合中的元素移除扰才, 依靠equals方法進(jìn)行 比對(duì)

查詢操作:

?int size() :集合實(shí)際元素的個(gè)數(shù)

?boolean isEmpty() :判斷集合是否為空

?boolean contains(Object element) :判斷集合中有沒有包含一個(gè)元素

?boolean containsAll(Collection collection) :判斷集合中有沒有包含另一個(gè)集合中的元素

?Iterator iterator() :得到迭代器

八、List

數(shù)據(jù)結(jié)構(gòu):

邏輯存儲(chǔ)結(jié)構(gòu)

????線性的:每個(gè)元素有0或者1個(gè)前驅(qū)元素厕怜,有0個(gè)或者1個(gè)后繼元素

????樹結(jié)構(gòu):每個(gè)元素有一個(gè)或0個(gè)前驅(qū)元素衩匣,有0個(gè)多個(gè)后繼元素

????圖結(jié)構(gòu):每個(gè)元素有多個(gè)或0個(gè)前驅(qū)元素,有0個(gè)多個(gè)后繼元素

物理存儲(chǔ)結(jié)構(gòu)

????線性存儲(chǔ):元素在內(nèi)存中是連續(xù)存放的

????鏈?zhǔn)酱鎯?chǔ):元素在內(nèi)存中不是連續(xù)存放的

List: 有序集合粥航,可以放入重復(fù)(equals進(jìn)行判斷)元素琅捏,會(huì)按照存入的順序給每個(gè)元素編號(hào),遍歷的

時(shí)候也可以依靠編號(hào)進(jìn)行遍歷

示例:

1递雀、ArrayList

常用API

????構(gòu)造方法

底層:底層是一個(gè)Object類型的數(shù)組柄延,初始的默認(rèn)長(zhǎng)度10,也可以指定長(zhǎng)度缀程,初始長(zhǎng)度如果滿了搜吧,

底層進(jìn)行自動(dòng)擴(kuò)容,擴(kuò)容為原來(lái)的1.5倍oldCapacity + (oldCapacity >> 1)杨凑。10—->15—->22滤奈,如

果對(duì)集合中的元素個(gè)數(shù)可以預(yù)估,那么建議預(yù)先指定一個(gè)合適的初始容量,可以減少擴(kuò)容的次數(shù)


List l =new ArrayList();

線程不安全撩满,性能高蜒程。

優(yōu)點(diǎn):查找效率高,向末尾添加伺帘、刪除元素也可以

缺點(diǎn):增加 昭躺、刪除牽扯到數(shù)組的擴(kuò)容和移動(dòng),效率低

2曼追、LinkedList:

常用API:

構(gòu)造方法

LinkedList():無(wú)參數(shù)

LinkedList(Collection c):帶集合類型的參數(shù)

其他方法(實(shí)現(xiàn)類獨(dú)有的方法)

????addFirst:給鏈表頭添加元素

????addLast:給鏈表末尾添加元素

底層是一個(gè)鏈表(雙向)結(jié)構(gòu)窍仰,添加的元素和前后元素的地址信息會(huì)封裝成一個(gè)Node類型的對(duì)

象汉规,放到集合中礼殊,不是線性存儲(chǔ),內(nèi)存中是鏈?zhǔn)酱鎯?chǔ)针史,不連續(xù)的空間晶伦。

優(yōu)點(diǎn):增加、刪除效率高

缺點(diǎn):查找效率低

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末啄枕,一起剝皮案震驚了整個(gè)濱河市婚陪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌频祝,老刑警劉巖泌参,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脆淹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沽一,警方通過查閱死者的電腦和手機(jī)盖溺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铣缠,“玉大人烘嘱,你說我怎么就攤上這事』韧埽” “怎么了蝇庭?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捡硅。 經(jīng)常有香客問我哮内,道長(zhǎng),這世上最難降的妖魔是什么病曾? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任牍蜂,我火速辦了婚禮,結(jié)果婚禮上泰涂,老公的妹妹穿的比我還像新娘鲫竞。我一直安慰自己,他們只是感情好逼蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布从绘。 她就那樣靜靜地躺著,像睡著了一般是牢。 火紅的嫁衣襯著肌膚如雪僵井。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天驳棱,我揣著相機(jī)與錄音批什,去河邊找鬼。 笑死社搅,一個(gè)胖子當(dāng)著我的面吹牛驻债,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播形葬,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼合呐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了笙以?” 一聲冷哼從身側(cè)響起淌实,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拆祈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恨闪,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年放坏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凛剥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轻姿,死狀恐怖犁珠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情互亮,我是刑警寧澤犁享,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站豹休,受9級(jí)特大地震影響炊昆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜威根,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一凤巨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洛搀,春花似錦敢茁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至谎砾,卻和暖如春逢倍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背景图。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工较雕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挚币。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓亮蒋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親忘晤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宛蚓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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

  • 14.1 泛型與集合 JDK1.5增加了泛型支持激捏。增加泛型后的集合设塔,可以讓代碼更加簡(jiǎn)潔,程序更加健壯。Ja...
    王毅巽閱讀 535評(píng)論 0 0
  • 九種基本數(shù)據(jù)類型的大小闰蛔,以及他們的封裝類痕钢。(1)九種基本數(shù)據(jù)類型和封裝類 (2)自動(dòng)裝箱和自動(dòng)拆箱 什么是自動(dòng)裝箱...
    關(guān)瑋琳l(shuí)inSir閱讀 1,891評(píng)論 0 47
  • 簡(jiǎn)介 說起各種高級(jí)語(yǔ)言,不得不談泛型序六,當(dāng)我們?cè)谑褂胘ava集合的時(shí)候任连,會(huì)發(fā)現(xiàn)集合有個(gè)缺點(diǎn):把一個(gè)對(duì)象“丟進(jìn)”集合之...
    雙木ll之林閱讀 265評(píng)論 0 1
  • 在經(jīng)過一次沒有準(zhǔn)備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼例诀,基礎(chǔ)知識(shí)卻忘的差不多了随抠。這是程序員的大忌,沒...
    猿來(lái)如癡閱讀 2,849評(píng)論 3 10
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,268評(píng)論 0 16