Java資料結構原始碼分析 Vector

2021-07-13 03:46:33 字數 1431 閱讀 9375

vector和arraylist都是通過陣列來構建順序列表的資料結構,其關係同hashmap與hashtable一樣,vector是乙個執行緒安全的資料結構,而arraylist是非執行緒安全的,因此在不考慮多執行緒的情況下,arraylist比vector速度更加的快,在考慮執行緒安全的情況下,arraylist提供了synchronizedlist類來保證執行緒安全,其訪問速度同vector沒有太大差別,只不過vector是synchronized(this)來保證執行緒安全,而synchronizedlist是通過synchronized(mutex)物件來保證。因此也vector也可以被廢棄(這個並不是因為效能原因)

public

class

collections

public

static

listsynchronizedlist(listlist)

static class synchronizedlistextends synchronizedcollectionimplements list

synchronizedlist(listlist, object mutex)

public

boolean

equals(object o)

}public

inthashcode()

}public e get(int index)

}public e set(int index, e element)

}public

void

add(int index, e element)

}public e remove(int index)

}public

intindexof(object o)

}public

intlastindexof(object o)

}public

boolean

addall(int index, collection<? extends e> c)

}public listiteratorlistiterator()

public listiteratorlistiterator(int index)

public listsublist(int fromindex, int toindex)

}private object readresolve()

}}

1) vector的方法都是同步的(synchronized),是執行緒安全的(thread-safe),而arraylist的方法不是,由於執行緒的同步必然要影響效能,因此,arraylist的效能比vector好。

2) 當vector或arraylist中的元素超過它的初始大小時,vector會將它的容量翻倍,而arraylist只增加50%的大小,這樣,arraylist就有利於節約記憶體空間。

java 資料結構 原始碼閱讀

collections工具類裡的 collections.synchronizedlist public static listsynchronizedlist listlist 僅僅是通過判斷是否實現randomaccess介面,而返回不同的synchronizedlist 內部 類,random...

Java資料結構 HashMap 原始碼閱讀

hashmap就是資料結構中的雜湊表,是以key,value的形式進行儲存資料的,陣列具有查詢定位快,但是插入操作效能差,鍊錶具有查詢慢插入快速的特點,而hashmap可以說是這兩種方式的一種折中。hashmap採用陣列與煉表相結合的方式實現,如下圖所示 hashmap會根據儲存實體key的值確定存...

HshMap 資料結構以及原始碼分析

最近整理資料結構方面的知識點,hashmap是很重要的一部分,今天來聯合原始碼分析他的資料結構以及儲存方式!接下來將從以下幾個方面來分析 根據jdk1.8 1.構造方法 2.重要的幾個資料解釋 3.put 4.get 儲存資料的陣列 table transient node table 儲存資料的基...