arraylist、linkedlist 、vector
arraylist 底層是乙個陣列。
構造器三種:
①無參構造,初始化乙個預設大小為10的陣列。
②給乙個capacity初始化為這個大小。
③給定另乙個已有的集合a,呼叫a的toarray方法,a如果為0那麼也按無參構造處理,
如果a中有元素那麼就呼叫array.copyof函式複製過來。
add的話就是跟普通陣列一樣,多了擴容的判斷與操作。
真正add前先判斷擴容
倍擴容 jdk 1.8
int newcapacity = oldcapacity +
(oldcapacity >>1)
;
如果是用索引add 那麼會呼叫native的移動陣列方法
public
static
native
void
arraycopy
(object src,
int srcpos,
object dest,
int destpos,
int length)
;
特點就是隨機訪問快,在中間插入效率低下。
linkedlist是乙個雙向鍊錶,
初始化兩種方式:
①空構造
②使用乙個存在的集合。呼叫addall方法先toarray成object陣列 然後進行尾插法,插入前經過強轉linkedlist給的泛型。
採用尾插法
for
(object o : a)
在頭部和尾部get元素的和刪除的如果不存在都拋異常。
如果是get乙個index,會先進入乙個判斷方法判斷,不在範圍也是拋異常
public e getfirst()
/** * returns the last element in this list.
** @return the last element in this list
* @throws nosuchelementexception if this list is empty
*/public e getlast()
/** * removes and returns the first element from this list.
** @return the first element from this list
* @throws nosuchelementexception if this list is empty
*/public e removefirst()
/** * removes and returns the last element from this list.
** @return the last element from this list
* @throws nosuchelementexception if this list is empty
*/public e removelast()
四種add方法:
①add乙個元素:呼叫尾插法
②addfirst方法:呼叫頭插法
③addlast方法:呼叫尾插法
④add index,key:先判斷範圍,超範圍拋異常,再看是不是最後乙個位置,如果是那就直接呼叫尾插法,否則的話就找吧。
offer的話都是呼叫add方法,尾插 ,最後返回乙個true。是的 幾乎所有方法都使用了synchronized關鍵字push是呼叫addfirst和pop 呼叫removefirst,都是對頭進行操作
擴容兩倍增長,如果沒有指定,陣列進行遷移
2012面試準備 2012 10 26面試準備
c 1 什麼純虛函式?首先,二者申明不一樣。virtual void test void 虛函式 virtual void test void 0 純虛函式 其次,如果乙個類包含了乙個純虛函式 哪怕只有乙個是純虛函式 那麼它就是乙個抽象類 就是不能生成具體的物件!但如果類中只包含虛函式,那麼是可以定...
面試需要準備!!
1 請介紹一下你自己。這是外企常問的問題。一般人回答這個問題過於平常,只說姓名 年齡 愛好 工作經驗,這些在簡歷上都有,其 實,外企最希望知道的是求職者能否勝任工作,包括 最強的技能 最深入研究的知識領域 個性中最積極的部分 做過的最成功的事,主要的成就等,這些都可以 和學習無關,也可以和學習有關,...
騰訊面試準備
1.const的含義及實現機制,比如 const int i,是怎麼做到i只可讀的?答 const用來說明所定義的變數是唯讀的,這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用 2.到商店裡買200的商品返還100優惠券 可以在本商店代替現金 請問實際上折扣是多少?答 由於優惠券可以代...