資料結構Map Set List

2021-08-29 03:03:29 字數 2113 閱讀 5711

collection、list、set和map都是介面(inte***ce),其中collection是所有集合類的介面,set和list也都實現該介面。 

set是一種不包含重複的元素的無序collection。 一般使用的有hashset和treeset。

雖然set同list都實現了collection介面,但是他們的實現方式卻大不一樣。list基本上都是以array為基礎。但是set則是在 hashmap的基礎上來實現的,這個就是set和list的根本區別。

hashset:

通過hashcode來判斷儲存位置,所以物件必須實現hashcode()方法,儲存的資料無序不能重複,可以儲存null,但是只能存乙個。

public boolean add(object obj)
add函式決定了,再set中不能由重複的元素。如果使用add(object obj)方法新增已經存在的物件,則會覆蓋前面的物件

linkedhashset

是hashset的乙個子類,嚴格按照插入的順序進行儲存,其內部使用linkedhashmap實現,所以可以做到有序。當所存資料需要有序儲存時,使用linkedhashset代替hashmap。

linkedhashmap時非執行緒安全的。

treeset

treeset是sortedset的子類,與hashset的最根本區別就是其是有序的。

sortedset由sortedmap實現,treeset是根據二叉樹實現的,也就是treemap,元素不能重複,不能為null,可以重寫comparator()來進行公升序降序。

arraylist

基於陣列實現,對於插入的元素按順序儲存,arraylist插入資料可以重複,也是有序的,按照插入的順序來排序。,非執行緒安全。

適用於較小資料量的儲存,每次擴容擴其50%的容量,由於非執行緒安全,所以效率較高。

對於資料的隨機get和set或是少量資料的插入或刪除

vector

基於陣列實現,但是執行緒安全。

每次擴容擴其一倍的容量,由於執行緒安全,所以效率較低。

linkedlist

基於鍊錶的雙向鍊錶實現

對於資料的插入刪除,無需像arraylist進行大量的資料移動。

獲取資料的方式:二分查詢

如果序號小於鍊錶長度的一半,則順序查詢,若大於鍊錶的一半則從尾部進行遍歷,直到找到所需元素。

linkedlist

通過雙向鍊錶實現佇列

priorityqueue

基於堆結構實現,可以用它來實現優先佇列。

map是將鍵和值進行關聯的容器,乙個鍵只能對應乙個值,但乙個值可以被多個鍵對應。同時乙個鍵可以對應乙個map物件。

若某個鍵對應的值發生變化,按最後一次修改的為準。

同set鍵值不能重複,為了防止資料訪問儲存過程中發生混亂。

hashmap通過雜湊表實現,其儲存沒有固定順序,非執行緒安全,鍵值可以為null。

根據key算出index,若index相同,則在該位置已鍊錶的形式儲存。

linkedhashmap繼承自hashmap,特點是內部存入資料是有順序的,增加了記住元素插入或者訪問順序的功能,這個是通過內部乙個雙向的迴圈鍊錶實現的。與 hashmap 一樣,它可以為基本操作(add、contains 和 remove)提供穩定的效能,假定雜湊函式將元素正確分布到桶中。由於增加了維護鏈結列表的開支,其效能很可能比 hashmap 稍遜一籌,不過這一點例外:linkedhashmap 的 collection 檢視迭代所需時間與對映的大小 成比例。hashmap 迭代時間很可能開支較大,因為它所需要的時間與其容量 成比例。

於hashmap類似,但鍵值不可以為null,且執行緒安全,但是hashtable效率較低,現在基本不使用。

若想實現執行緒安全可通過hashmap手動加synchronized來進行執行緒同步。

treemap的使用大致跟hashmap類似,但是內部實現是根據紅黑樹來實現的。紅黑樹是一種平衡有序的二叉樹,treemap的插入刪除查詢都是依據紅黑樹的規則來進行的。

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構 01 資料與資料結構

1.資料data 資料是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。2.資料元素data elements 資料元素是組成資料的 有一定意義的基本單位,在計算機中通常作為整體進行處理。3.資料物件data object 資料物件是性質相同的資料元素的...