集合

1. 集合Collection中存儲(chǔ)的如果是自定義類的對(duì)象,需要自定義類重寫哪個(gè)方法?為什么?

equals()方法。 contains() /remove()/retainsAll() ….

List:equals()方法

Set:(HashSet、LinkedHashSet為例):equals()、hashCode()

(TreeSet為例):Comparable:compareTo(Object obj);
Comparator:compare(Object o1,Object o2)

2. ArrayList,LinkedList,Vector三者的相同點(diǎn)與不同點(diǎn)?【面試題】

List Map Set

ArrayList、LinkedList與Vector的區(qū)別

ArrayList、LinkedList與Vector算是在面試用比較常見(jiàn)的知識(shí)點(diǎn)了。

2.1、ArrayList

ArrayList繼承AbstractList抽象父類,實(shí)現(xiàn)了List接口(可以進(jìn)行l(wèi)ist操作)、RandomAccess(可隨機(jī)訪問(wèn))、Cloneable(可拷貝)、Serializable(可序列化)

? 線程不安全

? 底層實(shí)現(xiàn)是數(shù)組ArrayList的默認(rèn)初始化容量是10,每次擴(kuò)容時(shí)候增加原先容量的一半,也就是變?yōu)?.5倍

2.2、LinkedList

LinkedList實(shí)現(xiàn)了List接口(可以進(jìn)行l(wèi)ist操作)、Deque接口(能夠當(dāng)做雙向端隊(duì)列使用)、Cloneable(可拷貝)、Serializable(可序列化)

? 線程不安全

? 底層實(shí)現(xiàn)是雙向鏈表,可以方便的從前/后進(jìn)行遍歷

2.3、Vector

Vector 是矢量隊(duì)列,它是JDK1.0版本添加的類。繼承于AbstractList,實(shí)現(xiàn)了List, RandomAccess, Cloneable這些接口

? 底層是數(shù)組,線程安全

? 所有方法都是同步,有性能損失

? Vector初始化length是10,每次擴(kuò)容時(shí)候增加原先容量的一倍,也就是變成原來(lái)的2倍

總的來(lái)說(shuō):查詢多用ArrayList,增刪多用LinkedList,多線程使用Vector

ArrayList

增刪慢不是絕對(duì)的,尾部增刪是ArrayList快,如果刪除的是中間位置的話,還是ArrayList要快

https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484130&idx=1&sn=4052ac3c1db8f9b33ec977b9baba2308&chksm=ebd743e3dca0caf51b170fd4285345c9d992a5a56afc28f2f45076f5a820ad7ec08c260e7d39&scene=21###wechat_redirect

3. List 接口的常用方法有哪些?(增、刪、改、查、插、長(zhǎng)度、遍歷)

add(Object obj)

remove(Object obj)/remove(int index)

set(int index,Object obj)

get(int index)

add(int index,Object obj)

size()

使用Iterator;foreach;普通的for

4. 如何使用Iterator和增強(qiáng)for循環(huán)遍歷List。舉例說(shuō)明

? 1.使用迭代器Iterator的hasNext()和next()方法來(lái)遍歷集合

Iterator iterator =  coll.iterator();

while (iterator.hasNext()) {

    Object object = (Object) iterator.next();

    System.out.println(object);

}

System.out.println();

? 2.使用增強(qiáng)for循環(huán)來(lái)遍歷集合

//格式: for (數(shù)據(jù)類型  形參 :被遍歷集合) {}

for (Object obj : coll) {

    System.out.println(obj);

}

5. Set存儲(chǔ)數(shù)據(jù)的特點(diǎn)是什么?常見(jiàn)的實(shí)現(xiàn)類有什么?說(shuō)明一下彼此的特點(diǎn)。

HashSet LinkedHashSet TreeSet

HashMap LinkedHashMap TreeMap

6.List、Map、Set的存儲(chǔ)特點(diǎn)?

List:以特定次序來(lái)持有元素,可有重復(fù)元素

Set:無(wú)法擁有重復(fù)元素,內(nèi)部排序

Map:保存key-value值,value可多值

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容