Collection集合接口和Map接口有什么關(guān)系?
沒有直接關(guān)系,但是一些子類會(huì)有依賴,Collection是最基本的集合接口,聲明了適用于JAVA集合(只包括Set和List)的通用方法。Map接口并不是Collection接口的子接口,但是它仍然被看作是Collection框架的一部分。
Collection 和 Collections 有什么區(qū)別?
Collection是最基本的集合接口,Collection派生了兩個(gè)子接口list和set,分別定義了兩種不同的存儲(chǔ)方式。
Collections是一個(gè)包裝類,它包含各種有關(guān)集合操作的靜態(tài)方法(對(duì)集合的搜索、排序、線程安全化等)。此類不能實(shí)例化,就像一個(gè)工具類,服務(wù)于Collection框架。
ArrayList和LinkedList的區(qū)別?分別用在什么場(chǎng)景?
?、? ArrayList和LinkedList可想從名字分析,它們一個(gè)是Array(動(dòng)態(tài)數(shù)組)的數(shù)據(jù)結(jié)構(gòu),一個(gè)是Link(鏈表)的數(shù)據(jù)結(jié)構(gòu),此外,它們兩個(gè)都是對(duì)List接口的實(shí)現(xiàn)。
前者是數(shù)組隊(duì)列,相當(dāng)于動(dòng)態(tài)數(shù)組;后者為雙向鏈表結(jié)構(gòu),也可當(dāng)作堆棧、隊(duì)列、雙端隊(duì)列
?、? 當(dāng)隨機(jī)訪問List時(shí)(get和set操作),ArrayList比LinkedList的效率更高,因?yàn)長(zhǎng)inkedList是線性的數(shù)據(jù)存儲(chǔ)方式,所以需要移動(dòng)指針從前往后依次查找。
③. 當(dāng)對(duì)數(shù)據(jù)進(jìn)行增加和刪除的操作時(shí)(add和remove操作),LinkedList比ArrayList的效率更高,因?yàn)锳rrayList是數(shù)組,所以在其中進(jìn)行增刪操作時(shí),會(huì)對(duì)操作點(diǎn)之后所有數(shù)據(jù)的下標(biāo)索引造成影響,需要進(jìn)行數(shù)據(jù)的移動(dòng)。
?、? 從利用效率來看,ArrayList自由性較低,因?yàn)樗枰謩?dòng)的設(shè)置固定大小的容量,但是它的使用比較方便,只需要?jiǎng)?chuàng)建,然后添加數(shù)據(jù),通過調(diào)用下標(biāo)進(jìn)行使用;而LinkedList自由性較高,能夠動(dòng)態(tài)的隨數(shù)據(jù)量的變化而變化,但是它不便于使用。
?、? ArrayList主要控件開銷在于需要在lList列表預(yù)留一定空間;而LinkList主要控件開銷在于需要存儲(chǔ)結(jié)點(diǎn)信息以及結(jié)點(diǎn)指針信息。
使用場(chǎng)景
鏈表,插入刪除快,查找修改慢。 適用于頻繁增刪的場(chǎng)景。
數(shù)組,查找快,插入刪除慢。 適用于頻繁查找和修改的場(chǎng)景。
更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。