JDK原始碼閱讀 集合框架 List介面

2021-09-23 22:23:17 字數 1299 閱讀 3332

list介面是collection介面最重要的兒子之一,也是我們常用的arrrylist類的超級老父親的老父親的老父親的。。。。老父親。先看他的定義

public inte***ce listextends collection
list介面有以下特點,也就是說他的實現類有以下特徵,大家使用的時候注意

list是有序的集合。這就意味著使用者可以根據元素在list中的位置對元素進行訪問。這個位置,我們稱作下標(index)。不過我們要記住,這個index是從0開始的

list允許重複元素,也就是說,如果你的list允許null的話,你全部放null也是沒問題的。而且,jdk強烈建議,如果你手動實現list,也請遵循這個規則

list介面對add,remove,equals,hashcode,iterator方法都在collection介面的基礎上增加了一些限制規則

接下來介紹一下list在collection基礎上擴充的一些方法

boolean addall(int index, collection<? extends e> c);
這個方法和addall(collection c)c作用類似,只不過在這個方法中,是將c中所有的元素從index所在的位置開始插入。index位置以後的元素一直往後移動,移動距離為c物件中元素的數量大小。

e get(int index);
根據元素的位置獲取元素。如果引數index大於或者等於list中元素的數量,也就是size(),會丟擲indexoutofbound***ception。

e set(int index, e element);
將list中index處的元素用element替換。還是那些問題,index必須小於元素數量,element必須符合規則。

void add(int index, e element);
在index指定的位置插入element

int indexof(object o);
返回元素o在list中的下標位置,當然,如果元素中沒有這個值的話,該方法返回-1;

int lastindexof(object o);
由於list中是允許重複元素的,所以呢,此方法是返回元素中最後乙個o的下標位置。如果list中沒有o,那麼就返回-1;

listsublist(int fromindex, int toindex);
根據起始值擷取list並返回

JDK原始碼閱讀 集合框架 Iterator介面

迭代器 iterator 模式,又叫做游標 cursor 模式。gof給出的定義為 提供一種方法訪問乙個容器 container 物件中各個元素,而又不需暴露該物件的內部細節。從定義可見,迭代器模式是為容器而生。很明顯,對容器物件的訪問必然涉及到遍歷演算法。你可以一股腦的將遍歷方法塞到容器物件中去 ...

JDK原始碼閱讀 集合類(1)

今天算是正式開始讀原始碼了。看了許多面經,發現不讀原始碼還是不行。今天稍微看了看一些介面和抽象類等,大致有了點理解。總結點它們之間的區別吧 collection是個介面,規範了一些相關的類必備的方法。其中,list set queue deque都繼承自collection。而collections...

JDK 原始碼 閱讀

to be continuing.持續修改中。1.stringbuffer 所處類層次 易忽略點 這個類是執行緒安全的。所有的method直接或間接加synchronized。所以我們如果是單執行緒情況下也考慮到這個會不會影響到效率。當然可能jit可以進行這個優化,待我接下來驗證。預設情況下乙個長為...