1、arraylist是實現了基於動態陣列的資料結構,因為位址連續,一旦資料儲存好了,查詢操作效率會比較高(在記憶體裡是連著放的)。
2、因為位址連續, arraylist要移動資料,所以插入和刪除操作效率比較低。
3、linkedlist基於鍊錶的資料結構,位址是任意的,所以在開闢記憶體空間的時候不需要等乙個連續的位址,對於新增和刪除操作add和remove,linedlist比較佔優勢。
4、因為linkedlist要移動指標,所以查詢操作效能比較低。
適用場景分析:
當需要對資料進行對此訪問的情況下選用arraylist,當需要對資料進行多次增加刪除修改時採用linkedlist。
1、vector的方法都是同步的,是執行緒安全的,而arraylist的方法不是,由於執行緒的同步必然要影響效能。因此,arraylist的效能比vector好。
2、當vector或arraylist中的元素超過它的初始大小時,vector會將它的容量翻倍,而arraylist只增加50%的大小,這樣。arraylist就有利於節約記憶體空間。
3、大多數情況不使用vector,因為效能不好,但是它支援執行緒的同步,即某一時刻只有乙個執行緒能夠寫vector,避免多執行緒同時寫而引起的不一致性。
4、vector可以設定增長因子,而arraylist不可以。
適用場景分析:
1、vector是執行緒同步的,所以它也是執行緒安全的,而arraylist是執行緒非同步的,是不安全的。如果不考慮到執行緒的安全因素,一般用arraylist效率比較高。
2、如果集合中的元素的數目大於目前集合陣列的長度時,在集合中使用資料量比較大的資料,用vector有一定的優勢。
1.treeset 是二叉樹實現的,treeset中的資料是自動排好序的,不允許放入null值 。
2.hashset 是雜湊表實現的,hashset中的資料是無序的,可以放入null,但只能放入乙個null,兩者中的值都不能重複,就如資料庫中唯一約束 。
3.hashset要求放入的物件必須實現hashcode()方法,放入的物件,是以hashcode碼作為標識的,而具有相同內容的string物件,hashcode是一樣,所以放入的內容不能重複。但是同乙個類的物件可以放入不同的例項。
適用場景分析:
hashset是基於hash演算法實現的,其效能通常都優於treeset。我們通常都應該使用hashset,在我們需要排序的功能時,我們才使用treeset。
1、hashmap不是執行緒安全的,而concurrenthashmap是執行緒安全的。
2、concurrenthashmap採用鎖分段技術,將整個hash桶進行了分段segment,也就是將這個大的陣列分成了幾個小的片段segment,而且每個小的片段segment上面都有鎖存在,那麼在插入元素的時候就需要先找到應該插入到哪乙個片段segment,然後再在這個片段上面進行插入,而且這裡還需要獲取segment鎖。
3、concurrenthashmap讓鎖的粒度更精細一些,併發效能更好。
資料結構基礎
資料結構定義 定義 一 資料元素集合 也可稱資料物件 中各元素的關係。定義 二 相互之間存在特定關係的資料元素集合。資料結構的種類 1 集合 2 線性結構 3 樹形結構 4 圖狀結構 或網狀結構 資料結構的形式定義 資料結構名稱 d,s 其中d為資料元素的有限集,s是d上關係的有限集 邏輯結構 資料...
基礎資料結構
1 雙鏈表。下面是c 版本的實現。include stdafx.h include 結構體 typedef struct nodedlink 初始化 void dlist dlink dl 求長度 int dlength dlink dl return i 查詢 dlink dsearch dlin...
資料結構基礎
邏輯結構 描述資料元素之間的邏輯關係。物理結構 資料結構在計算機中的表示 映像 又稱儲存結構。它包含資料元素的表示和關係的表示。用乙個可以由若干位組合形成的乙個位串表示乙個資料元素,稱這個位串為元素或節點。當資料元素由若干資料項組成時,位串中對應於各個資料項的子位串稱為資料域。資料元素之間的關係在計...