您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Java集合的總體框架有什么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
數(shù)組其實(shí)就是一個(gè)集合。集合實(shí)際上就是一個(gè)容器??梢詠砣菁{其它的數(shù)據(jù)。
集合是一個(gè)容器,是一個(gè)載體,可以一次容納多個(gè)對象。在實(shí)際開發(fā)中,假設(shè)連接數(shù)據(jù)庫,數(shù)據(jù)庫當(dāng)中有10條記錄,那么假設(shè)把這10條記錄查詢出來,在Java程序中會(huì)將10條數(shù)據(jù)封裝成10個(gè)Java對象,然后將10個(gè)Java對象放到某一個(gè)集合當(dāng)中,將集合傳到前端,然后遍歷集合,將一個(gè)數(shù)據(jù)一個(gè)數(shù)據(jù)展現(xiàn)出來
Java集合中實(shí)際存放的只是對象的引用,每個(gè)集合元素都是一個(gè)引用變量,實(shí)際內(nèi)容都放在堆內(nèi)存或者方法區(qū)里面,但是基本數(shù)據(jù)類型是在棧內(nèi)存上分配空間的,棧上的數(shù)據(jù)隨時(shí)就會(huì)被收回的。
可以通過包裝類把基本類型轉(zhuǎn)為對象類型,存放引用就可以解決這個(gè)問題。更方便的,由于有了自動(dòng)拆箱和裝箱功能,基本數(shù)據(jù)類型和其對應(yīng)對象(包裝類)之間的轉(zhuǎn)換變得很方便,想把基本數(shù)據(jù)類型存入集合中,直接存就可以了,系統(tǒng)會(huì)自動(dòng)將其裝箱成封裝類,然后加入到集合當(dāng)中
注意:
集合在Java中本身是一個(gè)容器,是一個(gè)對象
集合中任何時(shí)候存儲(chǔ)的都是“引用”
集合里面存儲(chǔ)的是對象內(nèi)存地址
集合里面可以套集合
集合也是一個(gè)對象,也有內(nèi)存地址
在Java中每一個(gè)不同的集合,底層會(huì)對應(yīng)不同的數(shù)據(jù)結(jié)構(gòu)。往不同的集合中存儲(chǔ)元素,等于將數(shù)據(jù)放到了不同的數(shù)據(jù)結(jié)構(gòu)當(dāng)中。什么是數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)就是數(shù)據(jù)結(jié)構(gòu)。不同的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)存儲(chǔ)方式不同。
比如
數(shù)組
二叉樹
鏈表
哈希表…
以上這些都是常用的數(shù)據(jù)結(jié)構(gòu)
你往集合c1中存放數(shù)據(jù),可能是放到數(shù)組上了。
你往集合c2中存放數(shù)據(jù),可能是放到二叉樹上了。
…
你使用不同的集合等同于使用了不同的數(shù)據(jù)結(jié)構(gòu)。new不同的對象,就是使用不同的數(shù)據(jù)結(jié)構(gòu)。如果對集合用法不了解,多去查JDK的API和百度
new ArrayList(); 創(chuàng)建一個(gè)集合,底層是數(shù)組
new LinkedList(); 創(chuàng)建一盒集合對象,底層是鏈表
new TreeSet(); 創(chuàng)建一個(gè)集合對象,底層是二叉樹
所有的集合類和集合接口都在Java.util包下,Java.util.*;
一類是單個(gè)方式存儲(chǔ)元素,單個(gè)方式存儲(chǔ)元素,這一類集合中超級父接口:Java.util.Collection;
一類是以鍵值對的方式存儲(chǔ)元素,以鍵值對的方式存儲(chǔ)元素,這一類集合中超級父接口:Java.util.Map;
Iterrator it = “Collection 對象”.iterator();
it是迭代器對象
synchronized
修飾一個(gè)代碼塊,被修飾的代碼塊稱為同步語句塊,其作用的范圍是大括號{}括起來的代碼,作用的對象是調(diào)用這個(gè)代碼塊的對象;
修飾一個(gè)方法,被修飾的方法稱為同步方法,其作用的范圍是整個(gè)方法,作用的對象是調(diào)用這個(gè)方法的對象;
修改一個(gè)靜態(tài)的方法,其作用的范圍是整個(gè)靜態(tài)方法,作用的對象是這個(gè)類的所有對象;
修改一個(gè)類,其作用的范圍是synchronized后面括號括起來的部分,作用主的對象是這個(gè)類的所有對象。
Iterable是接口
可迭代的,可遍歷的,所有集合元素都是可迭代的,可遍歷的
屬性:iterator()
Collection是接口
collection繼承于Iterable
所有集合繼承Iterable的含義是:所有集合都是可迭代的
Iterator
Iterator與Collection是關(guān)聯(lián)關(guān)系
集合的迭代器對象
屬性:hashNext(),next(),remove()…
List是接口
List繼承于Collectionlist
集合元素的特點(diǎn):有序可重復(fù),存儲(chǔ)的元素有下標(biāo)
有序?qū)嶋H上是說存進(jìn)去是這個(gè)順序,取出來還是這個(gè)順序,這里的順序不是按照大小排序
有序是因?yàn)閘ist集合都有下標(biāo),下標(biāo)從0開始,以1遞增
ArrayList
ArrayList繼承于ListArrayList
集合底層采用了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)
ArrayList集合是非線程安全的
LinkedList
LinkedList繼承于List
LinkedList集合底層采用了雙向鏈表數(shù)據(jù)結(jié)構(gòu)
Vector
Vector繼承于List
Vector集合底層采用了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)
Vector集合是線程安全的
Vector所有的方法都有syndronized關(guān)鍵詞修飾,所以線程安全,但是效率較低,Vector用的少
Set是接口
Set繼承于Collection
Set集合存儲(chǔ)元素特點(diǎn):無序不可重復(fù)
無序表示存進(jìn)去是這個(gè)順序,取出來就不一定是這個(gè)順序了
Set集合中元素沒有下
標(biāo)Set集合中的元素不能重復(fù)
HashSet
HashSet繼承于Set
HashSet集合在new的時(shí)候,底層實(shí)際上new了一個(gè)HashMap集合
向HashSet集合中存儲(chǔ)元素,實(shí)際上是存儲(chǔ)到了HashMap集合中
HashMap集合是一個(gè)哈希表數(shù)據(jù)結(jié)構(gòu)
SortedSet是接口
-SortedSet集合存儲(chǔ)元素的特點(diǎn):無序不可重復(fù),但是放在SortedSet集合中的元素可以自動(dòng)排序
SortedSet是可排序集合。放到該集合中的元素是自動(dòng)按照大小順序排序
TreeSet
TreeSet繼承于SortedSetTreeSet
集合底層實(shí)際上是TreeMap
new TreeSet集合的時(shí)候,底層實(shí)際上new了一個(gè)TreeMap集合
往TreeSet集合中放數(shù)據(jù)的時(shí)候,實(shí)際上是將數(shù)據(jù)放到TreeMap集合中了
TreeMap集合底層采用了二叉樹數(shù)據(jù)結(jié)構(gòu)
Map是接口
Map集合和Collection集合沒有關(guān)系
Map集合以key和value的這種鍵值對的存儲(chǔ)方式存儲(chǔ)元素
key和value都是存儲(chǔ)Java對象的內(nèi)存地址
所有Map集合的key特點(diǎn):無序不重復(fù)
Map集合的key和Set集合存儲(chǔ)元素特點(diǎn)相同
HashMap
HashMap繼承于Map
HashMap集合底層是哈希表數(shù)據(jù)結(jié)構(gòu)
非線程安全的
Hashable
Hashable集合底層也是哈希表數(shù)據(jù)結(jié)
構(gòu)線程安全,其中所有方法都帶有synchronized關(guān)鍵字,效率低
SortedMap是接口
SortedMap集合存儲(chǔ)元素特點(diǎn):無序不可重復(fù)
放在SortedMap集合key部分的元素會(huì)自動(dòng)按照大小順序排序
稱為可排序的集合
Properties
Properties繼承Hashable,另外Properties存儲(chǔ)元素的時(shí)候也是采用key和value的形式存儲(chǔ)k
ey和value只支持String類型,不支持其他類型
Properties被稱為屬性類
TreeMap
TreeMap集合底層的數(shù)據(jù)結(jié)構(gòu)是一個(gè)二叉樹
關(guān)于“Java集合的總體框架有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。