Java:Collection集合貌虾、泛型

1尽狠、Collection集合-概述

1)叶圃、集合是一個裝”引用類型”的”容器”

2)掺冠、Java內(nèi)部提供了很多”集合類”,每種集合類對元素的存儲采用了不同的”數(shù)據(jù)結(jié)構(gòu)”–集合存儲數(shù)據(jù)的方式斥黑。

3)锌奴、這些數(shù)據(jù)結(jié)構(gòu)都是各有千秋憾股,有的增刪快服球,查詢慢;有的增刪慢往枣,查詢快

4)婉商、常用數(shù)據(jù)結(jié)構(gòu):

? 1)渣叛、數(shù)組:ArrayList(增刪慢淳衙,查詢快饺著,常用于查詢)

? 2)幼衰、鏈表:LinkedList(增刪快渡嚣,查詢慢肥印,常用于操作數(shù)據(jù))

? 3)深碱、哈希表:HashSet(增刪改查都快,但每次都要生成哈希值)

? ……

5)功咒、集合體系?


2力奋、Collection接口中的常用功能能

1)刊侯、添加

public boolean add(E e): 把給定的對象添加到當(dāng)前集合中 锉走。

??ArrayList會永遠(yuǎn)返回true挪蹭;

??set中添加重復(fù)元素時,返回false辜羊;

2)八秃、刪除

public void clear()?:清空集合中所有的元素肉盹。

public boolean remove(E e): 把給定的對象在當(dāng)前集合中刪除上忍。

??當(dāng)移除多個相同元素纳本,只移除遇到的第一個

3)繁成、判斷

public boolean contains(E e): 判斷當(dāng)前集合中是否包含給定的對象巾腕。

public boolean isEmpty(): 判斷當(dāng)前集合是否為空混移。

4)歌径、獲取

public int size(): 返回集合中元素的個數(shù)回铛。

public Object[] toArray(): 把集合中的元素克锣,存儲到數(shù)組中袭祟。

5)、遍歷

public Iterator iterator():獲取一個迭代器

3您没、iterator迭代器

public Iterator iterator(): 獲取集合對應(yīng)的迭代器氨鹏,用來遍歷集合中的元素的压状。

? 1)种冬、public boolean hasNext():如果仍有元素可以迭代,則返回 true莺匠。

? 2)慨蛙、public E next():返回迭代的下一個元素。

publicstaticvoidmain(String[] args) {? ? ? ??

Collection list =newArrayList<>();? ? ? ??

list.add("aaa");? ? ? ??

list.add("bbb");? ? ? ??

list.add("ccc");? ? ? ??

list.add("ddd");? ? ? ??

System.out.println(list);? ? ? ??

Iterator iterable = list.iterator();while(iterable.hasNext()){? ? ? ? ? ??

System.out.println(iterable.next());? ? ? ??

}? ??

}


4跟匆、迭代器原理


5玛臂、迭代器-增強for

1)封孙、增強for也叫:foreach循環(huán)虎忌,是一種for循環(huán)的新寫法;

2)堪藐、使用增強for可以遍歷數(shù)組礁竞、集合:

? 1)杉辙、數(shù)組:

int[] arr = {1,2,3,4,5,6};for(int i = 0; i < arr.length ; i++){

? ? int n = arr[i];

? ? System.out.println(n);

}//增強forfor(int n:arr){//底層編譯為:普通for循環(huán)? ? System.out.println(n);

}

? 2)蜘矢、集合:

ArrayList list =newArrayList<>();

//增強forfor(String str:list){

//底層編譯為:迭代器System.out.println(str);

}

6、泛型-泛型概述

1)并淋、ArrayList list = new ArrayList<>();

? String就是這個集合的泛型

? 集合中只允許寫入泛型的類型數(shù)據(jù)

2)县耽、泛型的好處:可以讓編譯器幫助我們監(jiān)視镣典,只能向集合中添加指定的類型

7兄春、 泛型-定義和使用含有泛型的類

泛型定義說明:

? 1)、中的E:可以是大寫哑姚、小寫、字符倡蝙、多個字符绞佩;

? 2)品山、類中的方法可以使用這個類型名

class Student<E>{

? ? public void add(E e){}

? ? public E get(){return null;}

}

測試類:

Student<引用類型> stu = new Student<>();

stu.add(引用類型 對象名);

stu.get();//返回對應(yīng)的引用類型

8、泛型-含有泛型的方法

public classStudent{ public <E> void sum(E e1,E e2,E e3,E e4){//定義一個接收4個相同的值 System.out.println("e1 = "+e1);

? ? ? ? System.out.println("e2 = "+e2);

? ? ? ? System.out.println("e3 = "+e3);

? ? ? ? System.out.println("e4 = "+e4);

? ? }

}

測試類:

public static void main(String[] args) {

? ? ? ? Student student = new Student();

? ? ? ? student.<Integer>sum(1,2,3,4);//規(guī)定4個值的泛型為Integer? ? ? ??

? ? ? ?student.<String>sum("aaa","bbb","ccc","ddd");//String? ??

}

9笆载、泛型-含有泛型的接口

同泛型類:

public interfaceIA{

?public void add(E e);

}


10宰译、泛型-泛型通配符

1)、定義一個方法市栗,方法的參數(shù):任何泛型的集合

**

class Demo{

? ? public static void main(String[] args){

? ? ? ? ArrayList<String> list1 = new ArrayList<>();

? ? ? ? ArrayList<Integer> list2 = new ArrayList<>();

? ? ? ? ArrayList<Student> list3 = new ArrayList<>();

? ? ? ? p1(list1);//OK的? ? ? ? p1(list2);//OK的? ? ? ? p1(list3);//OK的? ? ? ? p1("呵呵");//錯誤? ? ? ? }

? ? public static void p1(ArrayList<?> list){

? ? }

}

2)填帽、定義一個方法咙好,方法的參數(shù):一個類和他的子類做泛型的集合(

class Person{}

class Student extends Person{}

class JavaStudent extends Student{}

測試類:

class Demo{

? ? public static void main(String[] args){

? ? ? ? ArrayList<Person> list1 = new ArrayList<>();

? ? ? ? ArrayList<Student> list2 = new ArrayList<>();

? ? ? ? ArrayList<JavaStudent> list3 = new ArrayList<>();

? ? ? ? p1(list1);//錯誤? ? ? ? p1(list2);//OK的? ? ? ? p1(list3);//OK的? ? }

? ? public static void p1(ArrayList<? extends Student> list){}

}

3)勾效、定義一個方法层宫,方法的參數(shù):一個類和他的父類做泛型的集合(

class Demo{

? ? public static void main(String[] args){

? ? ? ? ArrayList<Person> list1 = new ArrayList<>();

? ? ? ? ArrayList<Student> list2 = new ArrayList<>();

? ? ? ? ArrayList<JavaStudent> list3 = new ArrayList<>();

? ? ? ? p1(list1);//OK的? ? ? ? p1(list2);//OK的? ? ? ? p1(list3);//錯誤? ? }

? ? public static void p1(ArrayList<? super Student> list){}

}

復(fù)習(xí)

[ ] 能夠說出集合與數(shù)組的區(qū)別

1萌腿、集合的長度是可變的毁菱,集合可以存放引用類型

2锌历、數(shù)組的長度是有限的,數(shù)組可以存放任意類型

[ ] 說出Collection集合的常用功能

.add(E e):向集合中添加元素

.clear():將集合清空

.remove(E e):清除集合中的特定元素

.contains(E e):查找集合中是否有這個元素怔揩,返回boolean

.isEmpty();檢查集合是否為空商膊,為空返回true

.size():返回集合的長度

.toArray():將集合轉(zhuǎn)化為數(shù)組返回

[ ] 能夠使用迭代器對集合進行取元素

Iterator i = list.iterator;

i.hasNext():檢查集合中下一個是否有元素

i.Next():返回集合中的數(shù)據(jù)

[ ] 能夠說出集合的使用細(xì)節(jié)

[ ] 能夠使用集合存儲自定義類型

[ ] 能夠使用foreach循環(huán)遍歷集合

ArrayList<數(shù)據(jù)類型> list = new ArrayList<>();

for(數(shù)據(jù)類型 對象名:list){遍歷}

[ ] 能夠使用泛型定義集合對象

[ ] 能夠理解泛型上下限

[ ] 能夠闡述泛型通配符的作用

確定一個系統(tǒng)的學(xué)習(xí)Java的計劃,如果想自學(xué)材蹬,那么你就找一套非常系統(tǒng)的學(xué)習(xí)視頻堤器。如果你自己找不到系統(tǒng)的學(xué)習(xí)視頻≌海可以加下小編的Java學(xué)習(xí)群:557865078,編號(煙火)表蝙,不管你是小白還是大牛,小編我都?xì)g迎屿愚,不定期分享干貨,包括小編自己整理的一份2018最新的Java學(xué)習(xí)資料和0基礎(chǔ)入門教程扰法,歡迎初學(xué)和進階中的小伙伴

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塞颁,一起剝皮案震驚了整個濱河市祠锣,隨后出現(xiàn)的幾起案子伴网,更是在濱河造成了極大的恐慌沸伏,老刑警劉巖毅糟,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坟乾,居然都是意外死亡明吩,警方通過查閱死者的電腦和手機贺喝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門氮采,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹊漠,“玉大人躯概,你說我怎么就攤上這事牧牢。” “怎么了伯铣?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長放前。 經(jīng)常有香客問我凭语,道長,這世上最難降的妖魔是什么却舀? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮螃诅,結(jié)果婚禮上倘是,老公的妹妹穿的比我還像新娘搀崭。我一直安慰自己猾编,他們只是感情好答倡,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布获茬。 她就那樣靜靜地躺著攘轩,像睡著了一般度帮。 火紅的嫁衣襯著肌膚如雪稿存。 梳的紋絲不亂的頭發(fā)上瓣履,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音燕锥,去河邊找鬼归形。 笑死暇榴,一個胖子當(dāng)著我的面吹牛婆硬,可吹牛的內(nèi)容都是我干的柿祈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箭阶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怕磨,沒想到半個月后员帮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體导饲,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贱除。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳溺。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扯躺,死狀恐怖录语,靈堂內(nèi)的尸體忽然破棺而出澎埠,到底是詐尸還是另有隱情蒲稳,我是刑警寧澤江耀,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站索昂,受9級特大地震影響扩借,放射性物質(zhì)發(fā)生泄漏潮罪。R本人自食惡果不足惜沃暗,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一孽锥、第九天 我趴在偏房一處隱蔽的房頂上張望惜辑。 院中可真熱鬧,春花似錦抵卫、人聲如沸介粘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巡雨。三九已至铐望,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間营曼,已是汗流浹背锻全。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留了嚎,地道東北人歪泳。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓夹囚,卻偏偏與公主長得像荸哟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子劣砍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法香嗓,類相關(guān)的語法掠兄,內(nèi)部類的語法迅诬,繼承相關(guān)的語法婿牍,異常的語法铐维,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 廢話不多說露该,自己進入今天的主題 1睬棚、面向?qū)ο蟮奶卣饔心男┓矫妫?答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€方面: - 抽象:...
    傳奇內(nèi)服號閱讀 2,349評論 1 31
  • 你聽不到我的心碎 你看不到我的心碎 所以你不知道為什么我眼中有淚 只因為她來過…
    o小毛o閱讀 57評論 0 1
  • 曬多了人會變黑底靠,這是常識暑中。所以很多人認(rèn)為非洲人膚色黑一定是太陽曬得多了才變黑的鳄逾。而且要把皮膚曬的那么黑雕凹,所以非洲一...
    老祝讀書閱讀 2,374評論 0 0
  • 等了大半個月竖慧,五一小長假馬上就要來了。作為橫跨春夏的黃金周砍的,不好好浪浪總覺得有點對不起寄幾廓鞠! 但是你絕對要想清楚谣旁!...
    圓甜佳鳳梨酥閱讀 515評論 0 2