Java集合詳細介紹及原理

2021-06-28 10:00:50 字數 1664 閱讀 7696

collection(單列集合)

list(有序,可重複)

arraylist

底層資料結構是陣列,查詢快,增刪慢

執行緒不安全,效率高

vector

底層資料結構是陣列,查詢快,增刪慢

執行緒安全,效率低

linkedlist

底層資料結構是鍊錶,查詢慢,增刪快

執行緒不安全,效率高

set(無序,唯一)

hashset

底層資料結構是雜湊表。

雜湊表依賴兩個方法:hashcode()和equals()

執行順序:

首先判斷hashcode()值是否相同

是:繼續執行equals(),看其返回值

是true:說明元素重複,不新增

是false:就直接新增到集合

否:就直接新增到集合

最終:自動生成hashcode()和equals()即可

linkedhashset

底層資料結構由鍊錶和雜湊表組成。

由鍊錶保證元素有序。

由雜湊表保證元素唯一。

treeset

底層資料結構是紅黑樹。(是一種自平衡的二叉樹)

如何保證元素唯一性呢?

根據比較的返回值是否是0來決定

如何保證元素的排序呢?

兩種方式

自然排序(元素具備比較性)

讓元素所屬的類實現comparable介面

比較器排序(集合具備比較性)

讓集合接收乙個comparator的實現類物件

map(雙列集合)

a:map集合的資料結構僅僅針對鍵有效,與值無關。

b:儲存的是鍵值對形式的元素,鍵唯一,值可重複。

hashmap

底層資料結構是雜湊表。執行緒不安全,效率高

雜湊表依賴兩個方法:hashcode()和equals()

執行順序:

首先判斷hashcode()值是否相同

是:繼續執行equals(),看其返回值

是true:說明元素重複,不新增

是false:就直接新增到集合

否:就直接新增到集合

最終:自動生成hashcode()和equals()即可

linkedhashmap

底層資料結構由鍊錶和雜湊表組成。

由鍊錶保證元素有序。

由雜湊表保證元素唯一。

hashtable

底層資料結構是雜湊表。執行緒安全,效率低

雜湊表依賴兩個方法:hashcode()和equals()

執行順序:

首先判斷hashcode()值是否相同

是:繼續執行equals(),看其返回值

是true:說明元素重複,不新增

是false:就直接新增到集合

否:就直接新增到集合

最終:自動生成hashcode()和equals()即可

treemap

底層資料結構是紅黑樹。(是一種自平衡的二叉樹)

如何保證元素唯一性呢?

根據比較的返回值是否是0來決定

如何保證元素的排序呢?

兩種方式

自然排序(元素具備比較性)

讓元素所屬的類實現comparable介面

比較器排序(集合具備比較性)

讓集合接收乙個comparator的實現類物件

Java集合介紹

面試題 使用arraylist無參的建構函式建立乙個物件時,預設的容量是多少?如果長度不夠使用時又自增增長多少?arraylist底層是維護了乙個object陣列實現的,使用無參建構函式時,object陣列預設的容量是10,當長度不夠時,自動增長0.5倍。注 所以使用hashset時,一般我們都要重...

KMP演算法詳細介紹及Java實現

kmp是三位大牛 d.e.knuth j.h.morris和v.r.pratt同時發現的。其中第一位就是 計算機程式設計藝術 神作的作者。kmp演算法要解決的問題就是在字串 也叫主串 中的模式 pattern 定位問題。說簡單點就是我們平時常說的關鍵字搜尋。模式串就是關鍵字 接下來稱它為p 如果它在...

python之集合詳細介紹

2.集合用法 3.集合運算 4 集合總結 集合 set 是乙個無序的不重複元素序列,可以使用 set 函式建立。集合不同於列表和元組型別,集合儲存的元素是無序且不能重複的,即 1.集合只能儲存不可變物件 int型別 float型別 str型別 tuple型別 2.集合中儲存的物件是無序的 3.集合中...