更新時間:2019-11-15 11:20:26 來源:動力節(jié)點 瀏覽2586次
1.集合
1.1.什么是集合
存儲對象的容器,面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,所以為了方便對多個對象的操作,存儲對象,集合是存儲對象最常用的一種方式。
集合的出現(xiàn)就是為了持有對象。集合中可以存儲任意類型的對象,而且長度可變。在程序中有可能無法預(yù)先知道需要多少個對象,那么用數(shù)組來裝對象的話,長度不好定義,而集合解決了這樣的問題。
1.2.集合和數(shù)組的區(qū)別
數(shù)組和集合類都是容器
數(shù)組長度是固定的,集合長度是可變的。數(shù)組中可以存儲基本數(shù)據(jù)類型,集合只能存儲對象數(shù)組中存儲數(shù)據(jù)類型是單一的,集合中可以存儲任意類型的對象。
集合類的特點
用于存儲對象,長度是可變的,可以存儲不同類型的對象。
1.2.1.數(shù)組的缺點
存儲類型單一的數(shù)據(jù)容器,操作復(fù)雜(數(shù)組一旦聲明好不可變)CRUD
1.3.集合的分類
集合做什么
1:將對象添加到集合
2:從集合中刪除對象
3:從集合中查找一個對象
4:從集合中修改一個對象就是增刪改查
注意:集合和數(shù)組中存放的都是對象的引用而非對象本身
Java工程師對不同的容器進行了定義,雖然容器不同,但是還是有一些共性可以抽取最后抽取了一個頂層接口,那么就形成了一個集合框架。如何學(xué)習(xí)呢?當(dāng)然是從頂層學(xué)起,頂層里邊具有最共性,最基本的行為。具體的使用,就要選擇具體的容器了。為什么?因為不斷向上抽取的東西有可能是不能創(chuàng)建對象的.抽象的可能性很大,并且子類對象的方法更多一些.所以是看頂層,創(chuàng)建底層。那么集合的頂層是什么呢叫做Collection
集合框架體系

---|Collection:單列集合
---|List:有存儲順序,可重復(fù)
---|ArrayList:數(shù)組實現(xiàn),查找快,增刪慢
由于是數(shù)組實現(xiàn),在增和刪的時候會牽扯到數(shù)組
增容,以及拷貝元素.所以慢。數(shù)組是可以直接
按索引查找,所以查找時較快
---|LinkedList:鏈表實現(xiàn),增刪快,查找慢
由于鏈表實現(xiàn),增加時只要讓前一個元素記住自
己就可以,刪除時讓前一個元素記住后一個元
素,后一個元素記住前一個元素.這樣的增刪效
率較高但查詢時需要一個一個的遍歷,所以效率
較低
---|Vector:和ArrayList原理相同,但線程安全,效率略低
和ArrayList實現(xiàn)方式相同,但考慮了線程安全問
題,所以效率略低
---|Set:無存儲順序,不可重復(fù)
---|HashSet
---|TreeSet
---|LinkedHashSet
---|Map:鍵值對
---|HashMap
---|TreeMap
---|HashTable
---|LinkedHashMap
為什么出現(xiàn)這么多集合容器,因為每一個容器對數(shù)據(jù)的存儲方式不同,這種存儲方式稱之為數(shù)據(jù)結(jié)構(gòu)(datastructure)
注意集合和數(shù)組中存放的都是對象的引用。
1.1.什么時候該使用什么樣的集合
Collection
我們需要保存若干個對象的時候使用集合。
List
如果我們需要保留存儲順序,并且保留重復(fù)元素,使用List.
如果查詢較多,那么使用ArrayList
如果存取較多,那么使用LinkedList
如果需要線程安全,那么使用Vector
Set
如果我們不需要保留存儲順序,并且需要去掉重復(fù)元素,使用Set.
如果我們需要將元素排序,那么使用TreeSet
如果我們不需要排序,使用HashSet,HashSet比
TreeSet效率高.
如果我們需要保留存儲順序,又要過濾重復(fù)元素,那么使用LinkedHashSet
以上就是動力節(jié)點java學(xué)院小編針對“新手Java入門到精通,內(nèi)涵基礎(chǔ)java教程視頻”的內(nèi)容進行的回答,希望對大家有所幫助,如果對于學(xué)習(xí)Java的學(xué)習(xí)計劃,怎么學(xué)才有效率,或者學(xué)完如果找工作的問題,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
零基礎(chǔ)自學(xué)java教程推薦
最新java視頻教程免費下載(從入門到精通):http://www.soulsinkind.com/video.html
零基礎(chǔ)java自學(xué)教程:http://www.soulsinkind.com/tutorial_java_se/
相關(guān)推薦
零基礎(chǔ)學(xué)Java編程,這些內(nèi)容你一定要知道
學(xué)習(xí)Java編程了解一些免費Java開發(fā)工具
相關(guān)閱讀