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 儲存資料的基...