黑馬程式設計師 java基礎複習 集合

2021-09-01 18:23:54 字數 1788 閱讀 8418

---------------------- asp.net+android+io開發s、.net培訓、期待與您交流! ---------------------

一、集合概述

1、集合與陣列的比較:

首先要明白資料在計算機中的儲存方式,常用的有陣列、鍊錶、雜湊表和二叉樹等。

所有的陣列都用陣列這個方式儲存資料,這種方式查詢快,但是插入、刪除慢,而且是不可變長度的(陣列的擴容其實是建立乙個新的陣列,增加原來陣列的一半或者全長,然後將老陣列中的資料copy到新陣列中)

而集合則比較全面了,集合裡邊有各種底層實現方式,比如底層為陣列的arraylist、底層為鍊錶的linkedlist、底層為雜湊表的hashset和hashmap,還有底層為二叉樹的treeset和treemap。

集合在使用的時候不用考慮長度問題,即使是底層用陣列實現的arraylist也已經在內部封裝好了自動擴容的功能,而且集合還能把不同的物件裝在一起。

2、集合的特點

3、集合框架

其中list是存入取出有序的(按角標),允許有重複元素

set是存入無序,不允許有重複元素,其實取出是有序的(hashset按雜湊值來取出,treeset按比較順序來取出)

集合共性方法:

3.刪除元素。

4.判斷元素

5.取交集retainall

二、怎麼使用集合

集合除了共性的增刪改查方法外,還有乙個共性的itrator方法,而且對於單列集合還可以使用collections的enumeration方法來獲得對應的列舉迭代器,所以遍歷集合的方法時非常多的。

用iterator遍歷集合時,只能用iterator的方法來操作集合,不能用集合的方法來操作集合,因為會出現併發訪問集合的安全問題,而iterator中只有乙個remove方法能對集合中的元素進行操作。

在arraylist和linkedlist中還可以用listiterator來遍歷集合,這時候就可以有更多的操作了,比方說新增、修改等等。

在map集合中,遍歷就麻煩一點,有兩種方法:keyset和entryset,keyset是先拿到鍵的集合,再遍歷鍵的集合時根據鍵找值,而entryset則是直接遍歷鍵值對。

三、各種集合使用需要注意的問題

當我們選定乙個集合來使用的時候,必須要知道為什麼使用這個集合,然後使用這個集合能達到什麼效果,達到這個效果要符合什麼條件。下面我一一列出來

arraylist和linkedlist:就當陣列用,記住arraylist的查詢快、刪除新增慢,linkedlist增刪的效率比arraylist高。

hashset和hashmap: 這兩種集合裝的物件必須重寫hashcode和equals方法,因為他們的底層就是先通過hashcode來比較是不是相同事物,如果hashcode相同,再用equals比較是否相同。

treeset和treemap:這兩種集合裝的物件必須實現了comparable介面或者在建立集合的時候指定了比較器,因為這些集合只通過比compareto(實現comparable介面)或者compare(用比較器)的返回值來判斷事物是否相等。

四、集合面試題

**

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

詳細請檢視:

黑馬程式設計師 java基礎複習 GUI

asp.net android io開發s net培訓 期待與您交流!gui簡述 gui是graphical user inte ce 的縮寫,中文翻譯為圖形化使用者介面,提供了能與使用者直接進行互動的一些功能元件,這一塊的內容更多的是教我們當乙個畫家或者建築工人,原理非常簡單,只是難在怎麼去布局我...

黑馬程式設計師 集合

collection list 元素是有序的,元素可以重複。因為該集合體系有索引。arraylist 底層的資料結構使用的是陣列結構。特點 查詢速度很快。但是增刪稍慢。執行緒不同步。linkedlist 底層使用的鍊錶資料結構。特點 增刪速度很快,查詢稍慢。執行緒不同步。vector 底層是陣列資料...

黑馬程式設計師 集合

asp.net unity開發 net培訓 期待與您交流!1.集合類 為什麼會出現集合類?面對物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。集合類的特點 集合只用於儲存物件,集合的長度是可變的,集合可以儲存不同型別的物件。集合...