對List接口實現類ArrayList、LinkedList; Set接口實現類HashSet、TreeSet、LinkedHashSet; Map接口實現類LinkedHashMap、TreeMap、HashMap的存、取速度進行比較。
LinkedList與ArrayList:
LinkedList采用鏈表結構,在數據量較大時,插入元素只需改變插入點的相應索引,其他元素不受影響。ArrayList基于數組實現,插入元素要使其后的元素后移,因此在前部或中部插入元素時,LinkedList的速度顯然更快。(刪除元素亦是如此)。
而對于尾部添加(或刪除)元素,兩者差別不大,都很快。
對于讀取元素ArrayList直接根據索引號讀取,快。而LinkedList沒有索引號,需要從鏈表頭開始逐個向下查找,速度十分慢,且元素所在位置越靠后,速度越慢。
HashSet、TreeSet、LinkedHashSet存入速度比較
HashSet由于無序,存入速度最快。而TreeSet和LinkedHashSet由于有序,存入速度較慢。
LinkedHashMap、TreeMap、HashMap比較
HashMap通過計算對象的hashCode來將它放到指定的位置,人為無法預測。TreeMap用平衡二叉樹的方式,將存入的對象進行字典排序并存放,因此存入的速度最慢。LinkedHashMap使用雙向鏈表來維護鍵值對的次序,使得迭代次序與鍵值對的插入次序相同,因為它需要對插入元素進行排序與維護,因此效率低于HashMap。