黑馬程式設計師 集合類的筆記整理

2021-06-18 01:08:06 字數 2320 閱讀 6790

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

集合在面試中的分量還是很重的,所以做個集合的筆記整理。

集合類只用於儲存物件,型別有很多,而且長度可變,這集合類的特點。不過這裡要注意一點:集合中儲存的是都是物件的引用,而不是其實體。

那麼物件存到集合中該怎麼取出呢?答案是迭代器。把取出方式定義在集合內部,就可以直接訪問集合內部的元素,所以取出方式被定義成內部類。這些內部類都符合乙個規則(判斷和取出),就是iterator,然後通過提供iterator()方法獲取集合中的物件。

collection集合有list和set兩個子集,list是有序的,可以有重複物件,set是無序的,不可以有重複元素,這是由它們底部的資料結構決定的。list還有arraylist、linkedlist和vector三個子集,set有hashset和treeset兩個子集,下面我就做簡單整理。

collection常用方法:

1,新增:boolean add(object o)新增物件元素

boolean  addall(collection<?> c )將乙個集合新增到另乙個集合

2,獲取: int size()

3,刪除:boolean  remove(object o)刪除某個物件

boolean  removeall(collection<?> c )刪除某個子集合

voidclear()  清空集合

4,判斷: booleancontains(object o) 包含某個物件?

booleanisempty() 是否為空

5,取交集,保留相同元素: booleanretainall(collection<?> c)

6,迭代器iterator :boolean hasnext(),e next(),void remove()

list的常用方法:凡是操作角標的都是該體系特有的方法

1新增:void add(index,element)在指定位置新增元素

boolean 

addall(index,

collection<?> c 

)在指定位置新增集合

2,刪除: e remove(index) 刪除指定位置的元素

3,修改: e set (index,element)替換指定位置元素

4,獲取: e get(index)

listsublist(index,end)獲取子list集合

listiterator  listiterator()  

返回此列表元素的列表迭代器

listiteratorlistiterator(index)返回此列表元素的列表迭代器,從指定位置開始

int indexof(object o)取元素第一次出現的位置

這裡要說一下listiterator,比iterator功能更多一些,有了增改功能:

增加: voidadd(e e) 

替換: voidset(e e) 

還有逆向查詢:booleanhasprevious()  

逆向返回元素: e  previous() 

arraylist與list的功能相似,linkedlist有特殊的方法:

增加:booleanofferfirst(e e)   增加到開頭

booleanofferlast(e e)  增加到結尾

獲取: e peekfirst()      epeeklast()  取出但不刪除元素 ,如果沒有元素返回null

epollfirst()    epolllast()   取出但是刪除元素,如果沒有元素返回null

set集合的方法與collection類似。

list集合的底層資料結構是陣列,set的資料結構是雜湊表和二叉樹。list判斷元素是否相同的方法是呼叫equals()方法,這個方法在查詢和修改的時候會自動被呼叫。而hashset判斷是否為同乙個物件的方式是呼叫hashcode()和equals(),正是由於hashcode()方法,才使得物件的存貯順序和錄入順序不一致,並且不會重複。treeset可以對元素進行排序,不過必須得繼承comparable介面,實現compareto()方法,自定義比較規則,保證物件的唯一性。

另外,當元素自身不具備比較性,或者具備的比較性不是所需要的時候,可以讓集合具有比較性。這時需要定義乙個比較器,這個比較器是繼承了comparator介面的乙個類,實現compare()方法自定義比較規則後,建立物件傳給treeset集合的建構函式就可以了。

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

黑馬程式設計師 集合筆記

一 定義 用來存放不同型別的物件,長度是可以變的 connection有兩個子類 list,set list 允許元素重複 set 不允許元素 重複 list的子類 arraylist,linkedlist,vector set的子類 hashset,treeset 為什麼會出現這麼多容器呢?因為每...

黑馬程式設計師 Collection集合類

set treeset 2.map treemap hashtable map 一次存兩個物件,鍵值對 hashmap 使用雜湊演算法對鍵去重複,效率高,但無序 linkedhashmap 使用雜湊演算法去重複,並且保留儲存順序 treemap 使用二叉樹演算法排序,可以自定義順序 hashtabl...

黑馬程式設計師 集合類的CRUD

asp.net android io開發s net培訓 期待與您交流!arraylist 可變長度陣列,使用類似於陣列 屬性 capacity 集合中可以容納元素的個數,翻倍增長 count 集合中實際存放的元素的個數。方法 add addrange icollection c remove rem...