最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

2023-07-19 13:48 作者:洋仔進(jìn)化ing  | 我要投稿

Java集合學(xué)習(xí)筆記

一、集合

1.?概念:對象的容器,定義了對個對象操作的常用方法??蓪崿F(xiàn)數(shù)組的功能。

2.?和數(shù)組的區(qū)別:

(1)數(shù)組的容量是(長度length)是固定的

(2)數(shù)組中存放的數(shù)據(jù)的數(shù)據(jù)類型是固定的,和一開始創(chuàng)建數(shù)組約定的數(shù)據(jù)類型必須相同。

(3)集合的長度是可變的,可動態(tài)擴(kuò)容。

(4)允許存放不同類型的元素。

二、Collection集合

1.?定義

Collection是單列集合,用于存儲單個元素

Collection是一個接口,他下面有多個子接口和實現(xiàn)類,我們稱為Collection體系。

2.分類

List集合中的元素是有序的,可重復(fù)

Queue隊列,除優(yōu)先級外,保持先進(jìn)先出的原則(基本不用)

Set集合的元素是無序的,元素不能重復(fù)。

3.常用方法

Collection 集合名=new ArrayList();

添加元素:集合名.add()里面可以是任何類型

刪除元素:集合名.remove()

查詢集合中元素個數(shù):集合名.size()

查詢集合中是否包含某個元素:集合名.contains()

判斷集合元素個數(shù)是否為空 isEmoty()

三、List集合(接口)實現(xiàn)類

1.ArrayList【重點(diǎn)】:

低層用數(shù)組結(jié)構(gòu)實現(xiàn),查詢快、增刪慢;JDK1.2版本,運(yùn)行效率快、線程不安全。

List list=new ArrayList();

add(int index,E element)?指定位置插入元素

get(int index)返回此列表中指定位置的元素

indexOf(Object o)返回指定元素第一次出現(xiàn)的索引,如果沒有則返回-1

2.ArrayList源碼分析

在我們new ArrayList時,elmentData是空數(shù)組,如果沒有向集合中添加任何元素時,容量0,在第一次執(zhí)行add方法時,會給elementData賦予一個容量是10的新數(shù)組,在新數(shù)組里面添加元素。

DEFAULT_CAPACITY = 10;默認(rèn)容量

每次擴(kuò)容大小是原來的1.5倍

3.迭代器遍歷

hasNext()如果迭代有更多的元素,返回true

next()返回迭代的下一個元素

Iterator iterator=list.iterator();

while(iterator.hsaNext()){iterator.next();}輸出可以轉(zhuǎn)換類型

4.綜合練習(xí):去除集合中的重復(fù)字符串元素

List list=new ArrayList();//舊的集合,里面有重復(fù)的元素

List newList=new ArrayList();//創(chuàng)建新的集合

//通過迭代器的方式遍歷舊集合

Iterator iterator = list.iterator();

while (iterator.hasNext()){

??????String next=(String)iterator.next();//獲取元素

??????//判斷元是否存在于新的集合中,如果不存在則添加,達(dá)到去重目的

??????if(!newList.contains(next)){

????????newList.add(next);

??????}

????}

System.out.println(newList.toString());

四、Vector實現(xiàn)類

Vector:

數(shù)組結(jié)構(gòu)實現(xiàn),查詢快、增刪慢;JDK1.0版本,運(yùn)行效率慢、線程安全。

五、LinkedList實現(xiàn)類

LinkedList:

低層用鏈表結(jié)構(gòu)實現(xiàn),增刪快,查詢慢。

六、Set子接口

特點(diǎn):無序、無下標(biāo),元素不可重復(fù)。

方法:全部繼承自Collection中的方法。

七、HashSet實現(xiàn)類

HashSet【重點(diǎn)】:

基于hashCode、equals實現(xiàn)元素不重復(fù)。當(dāng)存入元素的哈希碼相同時,會調(diào)用==或equals進(jìn)行確認(rèn),結(jié)果為true,拒絕后者存入。

八、LinkedHashSet實現(xiàn)類

?LinkedHashSet:

鏈表實現(xiàn)的HashSet,按照鏈表進(jìn)行存儲,即可保留元素的插入順序。

九、TreeSet實現(xiàn)類

TreeSet:

基于排列順序?qū)崿F(xiàn)元素不重復(fù)。

實現(xiàn)了SortedSet接口,對集合元素自動排序。

元素對象的類型必須實現(xiàn)Comparable接口,指定排序規(guī)則。

通過CompareTo方法確定是否為重復(fù)元素。

十、Comparator接口

Comparator比較器

可以實現(xiàn)定制比較,元素自身提供的比較規(guī)則稱為自然排序。

compare(o1,o2),如果返回值為0,則為重復(fù)元素。

使用Comparator比較器,元素類型可不實現(xiàn)Comparable接口,并且優(yōu)先級高于Comparable接口。

十一、Map集合

1.定義

Map集合稱為“映射”存儲一對數(shù)據(jù)(Key-Value),鍵不可重復(fù),值可以重復(fù)。如果出現(xiàn)相同的鍵,會用新的值覆蓋老的值。

常用方法:

V put(K key,V value) //將對象存入到集合中,關(guān)聯(lián)鍵值。key重復(fù)則覆蓋原值。

Object get(Object key) //根據(jù)鍵獲取對應(yīng)的值。

Set<K> keySet()//返回所有key。

Collection<V> values() //返回包含所有值的Collection集合。

Set<Map.Entry<K,V>> entrySet() //鍵值匹配的Set集合。

十二、Map集合的實現(xiàn)類

HashMap【重點(diǎn)】:

JDK1.2版本,線程不安全,運(yùn)行效率快 ;允許用null 作為key或是value。

LinkedHashMap:

有順序的HashMap。

TreeMap :

實現(xiàn)了SortedMap接口(Map的子接口),可以對key自動排序,Key需實現(xiàn)Comparable接口。

十三、Hashtable實現(xiàn)類

Hashtable :

JDK1.0版本,線程安全,運(yùn)行效率慢;不允許null作為key或是value。

十四、Properties實現(xiàn)類

Hashtable的子類,要求key和value都是String。通常用于配置文件的讀取。

十五、HashMap源碼分析

HashMap剛創(chuàng)建時,table是null,為了節(jié)省空間,當(dāng)添加第一個元素時,table容量調(diào)整為16。

當(dāng)元素個數(shù)大于閾值(16*0.75=12)時,會進(jìn)行擴(kuò)容,擴(kuò)容后大小為原來的2倍。目的是減少調(diào)整元素的個數(shù)。

jdk1.8 當(dāng)每個鏈表長度大于8,并且數(shù)組元素個數(shù)大于等于64時,會調(diào)整為紅黑樹,目的提高執(zhí)行效率。

jdk1.8 當(dāng)鏈表長度小于等于6時,調(diào)整成鏈表。

jdk1.8以前,鏈表是頭插入,jdk1.8以后是尾插入。

把對象存儲到哈希表中如何存儲?

我們把key對象通過hash()方法計算出它的hash值,然后用這個hash值對數(shù)組的長毒取余計算,來決定該key對象在數(shù)組中的存儲位置,當(dāng)這個位置有多個對象時,以鏈表結(jié)構(gòu)存儲。jdk1.8 以后,當(dāng)每個鏈表長度大于8,并且數(shù)組元素個數(shù)大于等于64時,會調(diào)整為紅黑樹

十六、泛型

????A.Java泛型是JDK1.5中引入的一個新特性,其本質(zhì)是參數(shù)化類型,把類型作為參數(shù)傳遞。

B.常見形式有泛型類、泛型接口、泛型方法。

C.語法:

<T,...>?T稱為類型占位符,表示一種引用類型。

D.好處:

提高代碼的重用性,防止類型轉(zhuǎn)換異常,提高代碼的安全性

E.?注意事項

F.?泛型集合

????1.概念:參數(shù)化類型、類型安全的集合,強(qiáng)制集合元素的類型必須一致。

2.特點(diǎn):

編譯時即可檢查,而非運(yùn)行時拋出異常。

訪問時,不必類型轉(zhuǎn)換(拆箱)。

不同泛型之間引用不能相互賦值。




千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java的評論 (共 條)

分享到微博請遵守國家法律
晋城| 汾阳市| 吉林省| 杭州市| 洱源县| 博罗县| 莱州市| 莱阳市| 舒兰市| 菏泽市| 怀宁县| 二连浩特市| 于田县| 嵊泗县| 贵州省| 黑龙江省| 宁乡县| 许昌县| 长乐市| 东莞市| 潢川县| 通河县| 灵武市| 平利县| 孝昌县| 巨鹿县| 右玉县| 温宿县| 漳浦县| 连山| 股票| 鸡东县| 岑溪市| 台安县| 汝南县| 成都市| 永安市| 林西县| 铁力市| 黄龙县| 璧山县|