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

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

150天打卡Day24_集合深度解析- Java集合體系

2021-05-18 11:39 作者:關(guān)阿姨的Java日記  | 我要投稿

Java集合框架概述

集合,數(shù)組都是對多個數(shù)據(jù)進行存儲操作的結(jié)構(gòu),簡稱Java容器,此時的存儲主要是內(nèi)存層面的,不涉及到持久化存儲

數(shù)組在存儲多個數(shù)據(jù)方面的缺點

一旦初始化以后,其長度就確定了,不可修改,

數(shù)組一旦定義好類型,其類型就確定了,只能操作指定類型的數(shù)據(jù)

數(shù)組中提供的方法有限,對于例如插入,刪除操作非常不便,效率很低

獲取數(shù)組中實際元素個數(shù)的需求,數(shù)組中沒有現(xiàn)成的屬性或方法可用

數(shù)組存儲數(shù)據(jù)的特點:有序可重復,對于一些無序不可重復的需求,數(shù)組也不能滿足

Java集合體系介紹 ?

Java集合可以分為Collection和Map兩種體系,位于Java.util包下

Collection:存放單列數(shù)據(jù),定義了存取一組對象的方法的集合

下分兩類:

List:元素有序,可重復的集合(ArrayList,LinkedList,vector)

set:元素無序,不可重復的集合(HashSet,LinkedHashSet,TreeSet)

Map:存放雙列數(shù)據(jù),保存具有映射關(guān)系的"key-value"對的集合

(HashMap,LinkedHashMap,TreeMap,HashTable,Properties)

集合這里的有序不是排序,指的是添加順序和取出順序一致


Collection和Collections的區(qū)別

Collection是一個單列集合接口,提供了對集合對象進行基本操作的通用接口方法

Collections是一個包裝類,包含1很多對集合操作的靜態(tài)方法,此類不能被實例化,是一個工具類,服務(wù)于Java的Collection集合

集合迭代器 iterator

迭代器常用來遍歷集合

Foreach循環(huán)遍歷(內(nèi)部仍然是迭代器)


Collection子接口之一:List接口

鑒于Java中用數(shù)組存儲數(shù)據(jù)的局限性,通常使用LIst代替數(shù)組

List集合中元素有序,且可重復,集合中每個元素都有其對應(yīng)的順序索引

List容器中的元素都有對應(yīng)一個整數(shù)型的序號記載其在容器中的位置,可以根據(jù)序號存取元素

List接口常用的實現(xiàn)類:ArrayList,LinkedList,Vector

ArrayList,LinkedList,Vector的異同

相同點

均實現(xiàn)了List接口,擁有List集合的特性

不同點

ArrayList作為List接口最常用的實現(xiàn)類,線程不安全,效率高,底層是一個Object類型的數(shù)組elementdata,在JDK1.2版本問世

LinkedList底層使用雙向鏈表存儲,線程不安全,對于頻繁的插入,刪除操作,效率高于ArrayList,查找效率低于ArrayList,因為缺少按索引查找

Vector和ArrayList基本一致,底層公共方法均加了Synchronized關(guān)鍵字,線程安全,效率較低,底層也是Object[] elementData ,JDK1.0版本就問世了

ArrayList源碼分析

底層創(chuàng)建的初始長度為10的Object類型的數(shù)組elementData,擴容擴為原來的1.5倍,同時將原有數(shù)組中的數(shù)據(jù)拷貝到新數(shù)組中,建議開發(fā)中創(chuàng)建數(shù)組使用ArrayList帶參構(gòu)造器,指定初始容量,減少擴容可以使效率提高

JDK1.8ArrayList變化

創(chuàng)建時不指定容量,第一次調(diào)用add方法才創(chuàng)建初始容量為10的數(shù)組elementdata,其余與1.7一致

LinkedList源碼分析

底層采用雙向鏈表進行存儲,底層數(shù)據(jù)存儲的基本單位是Node,內(nèi)部聲明了Node類型的prev和next屬性, 默認值為null,進行添加操作相當于把元素封裝到Node中,創(chuàng)建了Node對象

Vector源碼分析

與ArrayList很相似,公共方法均添加了synchronized關(guān)鍵字,保證線程安全

Vector底層擴容,擴容為原來的2倍

大家記得給關(guān)阿姨點個關(guān)注呦


150天打卡Day24_集合深度解析- Java集合體系的評論 (共 條)

分享到微博請遵守國家法律
镶黄旗| 尼勒克县| 平远县| 当阳市| 隆尧县| 武穴市| 丽江市| 武陟县| 正镶白旗| 玉环县| 泸西县| 威宁| 固镇县| 阳曲县| 南城县| 抚松县| 岑溪市| 全南县| 乌拉特后旗| 伽师县| 紫金县| 安泽县| 大兴区| 梅河口市| 大城县| 扶余县| 手游| 邹城市| 嘉义县| 双辽市| 诏安县| 青川县| 册亨县| 东方市| 武川县| 彝良县| 永嘉县| 防城港市| 且末县| 平潭县| 玛曲县|