List集合總結

第一章 List集合總結

1.1 引導語

List 是工作中最常用的集合類型之一,面試的時候,大傢也會被問到各種各樣的問題,但是一般大多數情況下,隻要你看瞭解過List集合源碼,對List集合總結結構和源碼有所瞭解的話,一般都問題不大。

1.2 談一下你是如何理解ArrayList集合的?

很多面試官非常喜歡問這樣的問題,主要考察同學們平時工作學習過程中有沒有深入思考,經常性的總結.關於ArrayList集合起始內容還是比較多的,建議大傢先回答ArrayList的總體的結構,再找個自己很熟悉的理解很深入的細節作為入口,誇誇其談,就ok瞭.

比如:

ArrayList 底層數據結構是個數組,而數組有索引,內存元素存儲空間是連續的。所以查詢速度快,增刪速度較慢。內部實現瞭對數組操作過程的封裝,然後舉個添加元素add方法,詳細闡述

一般情況下面試官感覺你說的很有邏輯,某個具體的點講解又很輸入,就不會再深究瞭。

談一下你是如何理解LinkedList集合 的也是同樣套路。

第二章 擴容類問題

2.1 ArrayList 無參構造方法穿件對象後,調用 add方法添加 一個值進去,此時數組的大小是多少,下一次擴容前最大可用大小是多少?

答:此處數組的大小是 1,下一次擴容前最大可用大小是 10,因為 ArrayList 第一次擴容時,是有默認值的,默認值是 10,在第一次 add 一個值進去時,數組的可用大小被擴容到 10 瞭。

2.2 ArrayList 無參構造方法穿件對象後,調用 add方法連續添加,添加到第 11 個的時候,數組的大小是多少?

答:這裡的考查點就是擴容的公式,當增加到 11 的時候,此時我們希望數組的大小為 11,但實際上數組的最大容量隻有 10,不夠瞭就需要擴容,擴容的公式是:oldCapacity + (oldCapacity>> 1),oldCapacity 表示數組現有大小,目前場景計算公式是:10 + 10 /2 = 15,然後我們發現 15 已經夠用瞭,所以數組的大小會被擴容到 15。

2.3 ArrayList 無參構造方法穿件對象後,調用 add方法添加 一個值進去,如果我使用 addAll 方法,一下子加入 15 個值,那麼最終數組的大小是多少?

答:第一題中我們已經計算出來數組在加入一個值後,實際大小是 1,最大可用大小是 10 ,現在需要一下子加入 15 個值,那我們期望數組的大小值就是 16,此時數組最大可用大小隻有 10,明顯不夠,需要擴容,擴容後的大小是:10 + 10 /2 = 15,這時候發現擴容後的大小仍然不到我們期望的值 16,這時候源碼中有一種策略如下:

// newCapacity 本次擴容的大小,minCapacity 我們期望的數組最小大小
// 如果擴容後的值 < 我們的期望值,我們的期望值就等於本次擴容的大小
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;

发表回复

相关推荐

《杀戮追踪》完整解析➕漫画细节(未更新

先开个楼 ,佛系更。(很认真在思考 看这个漫画五年多了,还是爱不释手。 狗头镇楼 专门研究温暖男孩吴尚宇 更新不易 先简 ...

· 9分钟前

美西景點攻略:死亡谷國傢公園(Death Valley National Park)

前往理由 (Reason to go):1. 死亡谷國傢公園是除阿拉斯加外最大的國傢公園,幾近深不可測。公園占地面積 330萬英畝/134萬公...

· 31分钟前

《草虫的村落》试讲稿【初级】

一、导入 同学们,听,这是—-夏日虫鸣的声音。大自然的声音和色彩总能让人陶醉,走进去又使人流连忘返。让我们跟随作 ...

· 32分钟前

以宁蓉线为例,对长江沿江地带东西向铁路的分析

越过四川盆地的一座座山丘,南方夏天的草木生长得非常茂盛,从成都开往全国各地的列车在朦胧的雨后蜿蜒行驶在沱江之畔,驶过 ...

· 35分钟前

理想气体中 三种求压强的重要方法

高中物理中有一本书,既简单,又不简单;既有趣,又很有用。那就是高中物理中的选修3-3,今天我们讲它出题的应用。不过除了需 ...

· 38分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.