Java基礎之集合

2021-09-07 04:03:43 字數 2434 閱讀 6775

list

和set

都是conllection

介面的子介面。

list

中的元素是有順序的,可以重複的。

set中的額元素是沒有順序的,不可以重複的.

set是通過hashcode

和equals

比較元素是否重複的。

先使用hashcode

方法判斷已經存在

hashset

中元素的

hashcode

值和將要加入元素

hashcode

值是否相同。如果不同,直接新增;如果相同,再呼叫

equals

方法判斷,如果返回

true

表示hashset

中已經新增該物件了,不需要再次新增(重複),如果返回

false

就表示不重複,可以直接加入

hashset中

list

:是儲存單列資料的集合,儲存的資料是有序並且是可以重複的

map:儲存雙列資料的集合,通過鍵值對儲存資料,儲存

的資料是無序的,

key值不能重複,

value

值可以重複

1  arraylist

底層使用陣列實現。

linkedlist

底層使用鍊錶實現。

2 對於隨機方法

get和

set arraylist

的優於linkedlist

,因為linkedlist

查詢時需要指標移動。

3 對應增刪改操作

linkedlist

優於arraylist

,因為arraylist

需要建立新陣列拷貝資料,元素數量越多效率差距越大。

1 arraylist

和vector

都是list

的實現類。

2 arraylist

和vector

底層都是陣列實現的。

區別 1 arraylist

的所有方法都不是執行緒安全的,

vector

的所有方法都是執行緒安全的。

2 arraylist

和vector

的空間增長方式不同,

arraylist

按照1.5

被擴容,

vector

當擴容容量大於

0時,新陣列的長度為原陣列的長度

+擴容容量。否則新陣列的長度為原陣列的兩倍。

核心區別:

1 hashmap

的方法不是同步的,

hashtable

的方法是同步的。

2 hashmap

允許value

為null

,允許有乙個

key為

null

。hashtable

不允許出現為

null

的key

和value

。 次要區別:

1 hashmap

和hashtable

繼承的父類不同。

2 兩個

api也略有不同,

3 hashtable

預設的初始大小為

11,之後每次擴充,容量變為原來的

2n+1

。hashmap

預設的初始化大小為

16。之後每次擴充,容量變為原來的2倍

1 hashmap

實現的是

map介面。

hashset

實現的是

set介面。

2 hahsmap

是以鍵值對的形式儲存資料,

hashset

只是儲存物件。

3 hashmap

使用鍵值對來計算

hashcode

,hashset

使用物件來計算

hashcode

1 hashmap

不是執行緒安全的,

concurrenthashmap

是執行緒安全的。

2 concurrenthashmap

對整個桶陣列進行了分段,而

hashmap

則沒有

原理:hashmap

是基於hashing

的原理,我們使用

put(key, value)

儲存物件到

hashmap

中,使用

get(key)

從hashmap

中獲取物件。當我們給

put()

方法傳遞鍵和值時,我們先對鍵呼叫

hashcode()

方法,返回的

hashcode

用於找到

bucket

位置來儲存

entry

物件。

java基礎之集合

1.collectiton 單列儲存集合 list 元素是有序的,元素可以重複。因為該集合體系有索引 arraylist 底層的資料結構使用的是陣列結構 特點 陣列元素查詢很快,但是增刪很慢,因為增刪乙個元素,陣列後面的其他元素都需要變動,執行緒不同步 linklist 底層的資料結構使用的是鍊錶資...

java基礎之集合

集合的型別與各自的特性 collection 單列集合 list 有儲存順序,可重複 arraylist 陣列實現,查詢快,增刪慢由於是陣列實現,在增和刪的時候會牽扯到陣列增容,以及拷貝元素,所以慢。陣列是可以直接按索引查詢,所以查詢時較快。linkedlist 鍊錶實現,增刪快,查詢慢由於鍊錶實現...

java基礎之集合

集合容器因為內部的資料結構不同,有多種具體容器。不斷的向上抽取,就形成了集合框架。框架的頂層collection介面 collection的常見方法 1.新增 boolean add object obj boolean addall collection coll 2.刪除 boolean rem...