Arrays原始碼學習

2021-07-13 06:56:46 字數 1902 閱讀 6664

重點看了其中幾個靜態方法…

void sort(parameters)

引數型別可以分為兩類:primitive(基本型別)和object.

基本型別採用的是優化的快速排序,object採用的是改進的歸併排序。

這位博主總結的很好,學習一下…

int binarysearch(parameters)

boolean equals(type a, type a2)

判斷兩個陣列中的元素是否相等。

對於普通元素型別,用』==』判斷陣列對應位置上的元素;

對於特定的object,用其equals方法判斷。

void fill(type a, type val)

從fromindex到toindex(parameter中可省),利用for迴圈依次賦值。

t copyof(t original, int newlength)

實際**如下:

public static t copyof(t original, int newlength)
呼叫了運用反射及泛型的copyof:

public static t copyof(u original, int newlength, class<? extends t> newtype)
內部複製操作利用的是system.arraycopy(object src, int srcpos, object dst, int dstpos, int length)

各種過載如:

public static int copyof(int original, int newlength)
t copyofrange(t original, int from, int to)

與copyof類似,只不過限定了copy的範圍。

list aslist()

返回靜態內部類物件arraylist(a);

此arraylist繼承於abstractlist,使用final陣列儲存資料(所以不可以進行元素的新增刪除操作),它有這樣的一些方法:

- int size()

- object toarray()

- e get(int index)

- e set(int index, e element)

- int indexof(object o)

- boolean contains(object o)

如果想將乙個陣列轉化成乙個列表並做增加刪除操作的話,可以用以下方式:

listlist = new arraylist(arrays.aslist(e a))
int hashcode(type a)

hashcode的存在主要是用於查詢的快捷性,如hashmap,hashset等,hashcode是用來在雜湊儲存結構中確定物件的儲存位址的。

如果兩個物件相同(equals方法判斷),那麼兩個物件的hashcode一定相同。

如果物件的equals方法被重寫,那麼物件的hashcode也盡量重寫。

兩個物件的hashcode相同,並不一定表示兩個物件就相同(equals方法判斷),只能說明這兩個物件在雜湊儲存結構中,它們被存放在「同乙個籃子裡」(同一條鏈上)。

string tostring(type a)

返回諸如null//[1,2,3..];

可以分為三部分:

(1)加括號

(2)對每個元素使用string.valueof(e element)方法,在string內部呼叫的是元素自身的tostring方法;

(3)連線字串,使用的是stringbuilder.

原始碼學習 ArrayList的擴容原始碼分析

原始碼如下 下面是arraylist的擴容機制 arraylist的擴容機制提高了效能,如果每次只擴充乙個,那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量 param mincapac...

PicoContainer原始碼學習

介紹下自己,我叫stef wu,是個菜鳥,現在在easyjf團隊學習,得到了大峽等人的熱情幫助。本序列文章是以前在學習研究picocontainer時所記錄下來的,希望借本文,能和正在學習pico新手或者研究pico的高手一起交流學習。由於我水平不好,而且是真實的從頭到尾的記錄,所以其中,特別是前面...

PicoContainer原始碼學習

介紹下自己,我叫stef wu,是個菜鳥,現在在easyjf團隊學習,得到了大峽等人的熱情幫助。本序列文章是以前在學習研究picocontainer時所記錄下來的,希望借本文,能和正在學習pico新手或者研究pico的高手一起交流學習。由於我水平不好,而且是真實的從頭到尾的記錄,所以其中,特別是前面...