資料結構基礎

2021-09-29 04:02:34 字數 1447 閱讀 8367

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...

資料結構基礎

邏輯結構 描述資料元素之間的邏輯關係。物理結構 資料結構在計算機中的表示 映像 又稱儲存結構。它包含資料元素的表示和關係的表示。用乙個可以由若干位組合形成的乙個位串表示乙個資料元素,稱這個位串為元素或節點。當資料元素由若干資料項組成時,位串中對應於各個資料項的子位串稱為資料域。資料元素之間的關係在計...