一芋浮、java什么是集合冲甘。
其實(shí)集合跟數(shù)組差不多,只不過長(zhǎng)度是可以變化的。
List :有序的江醇,可以通過下標(biāo)訪問讀取
Map:無序的濒憋,是通過鍵值對(duì)存取
?Set:就是一個(gè)無序集合
它們的基本都實(shí)現(xiàn)Collection
1.常用集合:
List-->ArrayList
List-->LinkedList
二、集合跟數(shù)組有什么區(qū)別陶夜。
ArrayList和LinkedList的大致區(qū)別如下:
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)凛驮,LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2.對(duì)于隨機(jī)訪問get和set条辟,ArrayList覺得優(yōu)于LinkedList黔夭,因?yàn)長(zhǎng)inkedList要移動(dòng)指針。
3.對(duì)于新增和刪除操作add和remove羽嫡,LinedList比較占優(yōu)勢(shì)本姥,因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。
https://www.cnblogs.com/soundcode/p/6294174.html
三杭棵、常用集合Map
List集合跟Map集合差別在哪婚惫?
List:它是根據(jù)下標(biāo)來進(jìn)行添加和讀取,是有順序的魂爪。
Map:是根據(jù)鍵值對(duì)來添加和讀取先舷,Key value
HashMap和TreeMap的區(qū)別
HashMap:數(shù)組方式存儲(chǔ)key/value,線程非安全滓侍,允許null作為key和value蒋川,key不可以重復(fù),value允許重復(fù)撩笆,不保證元素迭代順序是按照插入時(shí)的順序捺球,key的hash值是先計(jì)算key的hashcode值,然后再進(jìn)行計(jì)算夕冲,每次容量擴(kuò)容會(huì)重新計(jì)算所以key的hash值氮兵,會(huì)消耗資源,要求key必須重寫equals和hashcode方法 耘擂。
默認(rèn)初始容量16胆剧,加載因子0.75,擴(kuò)容為舊容量乘2醉冤,查找元素快秩霍,如果key一樣則比較value,如果value不一樣蚁阳,則按照鏈表結(jié)構(gòu)存儲(chǔ)value铃绒,就是一個(gè)key后面有多個(gè)value;
TreeMap:基于紅黑二叉樹的NavigableMap的實(shí)現(xiàn)螺捐,線程非安全颠悬,不允許null矮燎,key不可以重復(fù),value允許重復(fù)赔癌,存入TreeMap的元素應(yīng)當(dāng)實(shí)現(xiàn)Comparable接口或者實(shí)現(xiàn)Comparator接口诞外,會(huì)按照排序后的順序迭代元素,兩個(gè)相比較的key不得拋出classCastException灾票。主要用于存入元素的時(shí)候?qū)υ剡M(jìn)行自動(dòng)排序峡谊,迭代輸出的時(shí)候就按排序順序輸出 。
作業(yè)思考
1刊苍、
動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)
鏈表的數(shù)據(jù)結(jié)構(gòu)
2既们、Map有幾種表現(xiàn)形式,它們之間有什么差別正什?
作業(yè)1:
第一題:要求產(chǎn)生10個(gè)隨機(jī)的字符串,每一個(gè)字符串互相不重復(fù),每一個(gè)字符串中組成的字符(a-zA-Z0-9)也不相同,每個(gè)字符串長(zhǎng)度為10;
分析:*1.看到這個(gè)題目,或許你腦海中會(huì)想到很多方法,比如判斷生成的字符串是否包含重復(fù),在判斷長(zhǎng)度是不是10,等等.
*2.其實(shí)這題我們可以培養(yǎng)一個(gè)習(xí)慣,大問題分解小問題解決.
(1).10個(gè)字符串,我們先產(chǎn)生一個(gè)10個(gè)字符不重復(fù)的字符串,
(2).怎么去重復(fù)呢?集合中的HashSet就可以,這題不適合用包含方法做,代碼復(fù)雜
(3).字符組成是由(a-zA-Z0-9)? 難道我們?cè)陔S機(jī)他們的碼表一一判斷嗎?-------->可以把們放到一個(gè)容器中ArrayList 在集合的隨機(jī)索引
四啥纸、HashMap,LinkedHashMap,TreeMap的區(qū)別。
Map主要用于儲(chǔ)存鍵值對(duì)婴氮,根據(jù)鍵得到值斯棒,因此不允許鍵重復(fù)(若重復(fù)則覆蓋),但是允許值重復(fù)莹妒。