java vector list,Java基础之:List——ArrayList Vector
Java基礎(chǔ)之:List——ArrayList & Vector
ArrayList簡(jiǎn)單介紹
ArrayList實(shí)現(xiàn)了List接口,底層是一個(gè)數(shù)組,并實(shí)現(xiàn)了可變的功能。底層屬性(transient Object[] elementData;)在序列化時(shí),忽略該屬性。
ArrayList實(shí)現(xiàn)了List接口,所以它可以允許出現(xiàn)重復(fù)值,也可以使用List中的所有方法。
ArrayList與Vector基本相同,ArrayList是線程不安全的,但比Vector效率更高。
ArrayList底層源碼分析
ArrayList底層維護(hù)了一個(gè)Object類型的數(shù)組elementData。(transient Object[] elementData;)
當(dāng)創(chuàng)建對(duì)象時(shí),如果是用的是無(wú)參構(gòu)造器public ArrayList(),則默認(rèn)初始化elementData容量為0。
當(dāng)添加元素時(shí):先判斷是否有足夠的容量進(jìn)行添加,若不夠則進(jìn)行擴(kuò)容,調(diào)用grow()方法,若足夠則直接在對(duì)應(yīng)位置添加元素即可。
在使用無(wú)參構(gòu)造public ArrayList()的情況下第一次擴(kuò)容默認(rèn)為10,之后再需要擴(kuò)容的話,則擴(kuò)容elementData為1.5倍,即10 + 10 / 2 = 15
若使用有參構(gòu)造public ArrayList(int initialCapacity),則默認(rèn)初始化elementData容量為initialCapacity。那么在第一次擴(kuò)容時(shí),則直接擴(kuò)容elementData到1.5倍initialCapacity。
源碼追蹤
代碼說(shuō)明:
package class_ArrayList;import java.util.ArrayList;public class ClassTest01_Debug {? @SuppressWarnings({ "unchecked", "rawtypes" }) public s.........
總結(jié)
以上是生活随笔為你收集整理的java vector list,Java基础之:List——ArrayList Vector的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keil流水灯c语言程序两个一起亮,我用
- 下一篇: 各种抠图动态图片_不用手。自动、智能抠图