一般將資料結構分為兩在類:線性資料結構和非線性資料結構。線性資料結構有線性表、棧、佇列、串、陣列和檔案;非線性資料結構有樹和圖。
線性表
一、arraylist
1、arraylist底層採用陣列實現,當使用不帶引數的構造方法生成arraylist物件時,實際上會在底層生成長度為10的object型別陣列。
object型別陣列
private transient object elementdata;
不帶引數的構造方法
public arraylist()
實際呼叫的方法public arraylist(int initialcapacity)
2、如果增加的個數超過10個,那麼arraylist底層會新生成乙個陣列,長度為原陣列的1.5倍+1,然後將原陣列的內容複製到新陣列中,後續增加的內容都會放到新組中。當新陣列無法容納增加的元素時,重複該過程。public boolean add(e e)
private void ensurecapacityinternal(int mincapacity)
jdk7已更新了新陣列長度的演算法
private void grow(int mincapacity)
3、arraylist的三個建構函式
arraylist() 建立乙個空的陣列列表
arraylist(int capacity) 建立乙個陣列列表,有指定的初始容量(capacity)。容量是用於儲存元素的基本陣列的大小。當元素被追加到陣列列表上時,容量會自動增加。
arraylist(collection c) 建立乙個陣列列表,由類集c中的元素初始化。如可放入乙個linkedlist。
4、獲取元素,檢查是否有該無素,有的話則直接取陣列的元素。
public e get(int index)
private void rangecheck(int index)
5、arraylist元素的刪除操作,需將被刪除元素的後續元素向前移動,代價比較高。public e remove(int index)
6、集合中只能放置物件的引用,無法放置原生資料型別,需要使用原生資料型別的包裝類才能加入到集合中。
二、linkedlist
void linklast(e e)
三、arraylist與linkedlist的比較分析private static class node
}
1、arraylist底層採用陣列實現,linkedlist底層採用雙向鍊錶實現。
2、當執行插入或者刪除操作時,採用linkedlist比較好。
3、當執行搜尋操作時,採用arraylist比較好。
資料結構 線性結構
typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 bool insert lis...
資料結構 線性結構
線性表基本操作有 1 list makeempty 初始化乙個新的線性表 2 elementtype findkth list l,int i 根據指定的位序i,返回l中相應元素ai i是下標 3 position find list l,elementtype x 已知x,返回線性表l中與x相同的...
線性資料結構
今天看了一些資料結構的知識,也是做一點簡,單的梳理。資料結構中常見的資料結構包括線性結構 樹型結構 圖結構等。先說一下線性結構。線性結構常見的是線性表,線性表是零個或多個資料元素組成的有限序列。線性表包括陣列 鍊錶 棧 佇列。陣列是邏輯結構上連續 儲存結構上也連續的線性表,生成時需要分配好長度。陣列...