Java 集合小結3

2021-06-27 11:11:35 字數 1693 閱讀 7546

集(set)是最簡單的一種集合,它的物件不按特定方式排序,只是簡單的把物件加入集合中,就像往口袋裡放東西。

對集中成員的訪問和操作是通過集中物件的引用進行的,所以集中不能有重複物件。

集也有多種變體,可以實現排序等功能,如treeset,它把物件新增到集中的操作將變為按照某種比較規則將其插入到有序的物件序列中。它實現的是sortedset介面,也就是加入了物件比較的方法。通過對集中的物件迭代,我們可以得到乙個公升序的物件集合。

(2)列表

列表的主要特徵是其物件以線性方式儲存,沒有特定順序,只有乙個開頭和乙個結尾,當然,它與根本沒有順序的集是不同的。

列表在資料結構中分別表現為:陣列和向量、鍊錶、堆疊、佇列。

(3)對映

對映與集或列表有明顯區別,對映中每個項都是成對的。對映中儲存的每個物件都有乙個相關的關鍵字(key)物件,關鍵字決定了 物件在對映中的儲存位置,檢索物件時必須提供相應的關鍵字,就像在字典中查單詞一樣。關鍵字應該是唯一的。

關鍵字本身並不能決定物件的儲存位置,它需要對過一種雜湊(hashing)技術來處理,產生乙個被稱作雜湊碼(hash code)的整數值,

雜湊碼通常用作乙個偏置量,該偏置量是相對於分配給對映的記憶體區域起始位置的,由此確定關鍵字/物件對的儲存位置。理想情況 下,雜湊處理應該產生給定範圍內均勻分布的值,而且每個關鍵字應得到不同的雜湊碼。

1. 所有的list中只能容納單個不同型別的物件組成的表,而不是key-value鍵值對。例如:[ tom,1,c ];

2. 所有的list中可以有相同的元素,例如vector中可以有 [ tom,koo,too,koo ];

3. 所有的list中可以有null元素,例如[ tom,null,1 ];

4. 基於array的list(vector,arraylist)適合查詢,而linkedlist 適合新增,刪除操作。

vector :

基於array的list,其實就是封裝了array所不具備的一些功能方便我們使用,它不可能走入array的限制。效能也就不可能超越array。所以,在可能的情況下,我們要多運用array。另外很重要的一點就是vector「synchronized」的,這個也是vector和arraylist的唯一的區別。

arraylist:

同vector一樣是乙個基於array上的鍊錶,但是不同的是arraylist不是同步的。所以在效能上要比vector優越一些,但是當執行到多執行緒環境中時,可需要自己在管理執行緒的同步問題。

linkedlist:

linkedlist不同於前面兩種list,它不是基於array的,所以不受array效能的限制。它每乙個節點(node)都包含兩方面的內容:1.節點本身的資料(data);2.下乙個節點的資訊(nextnode)。所以當對linkedlist做新增,刪除動作的時候就不用像基於array的list一樣,必須進行大量的資料移動。只要更改nextnode的相關資訊就可以實現了。這就是linkedlist的優勢。

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

1. set實現的基礎是map(hashmap);

2. set中的元素是不能重複的,如果使用add(object obj)方法新增已經存在的物件,則會覆蓋前面的物件

JAVA集合小結

有序集合 集合裡元素可以根據key和index進行訪問 無序集合 集合裡面的元素只能遍歷 有序集合在屬性的增加,刪除和修改擁有較好的效能表現。無序集 set 有序集 list map 所以,凡是實現set的abstractset,copyonwritearrayset,enumset,hashset...

Java集合小結

list與set map區別及適用場景 1 list,set都是繼承自collection介面,map則不是 2 list特點 元素有放入順序,元素可重複 set特點 元素無放入順序,元素不可重複,重複元素會覆蓋掉,注意 元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的...

java集合與陣列小結

一 arraylist和linkedlist的區別 arraylist 陣列結構 linkedlist 鍊錶結構 優點查詢速度快 新增和刪除的速度快 缺點新增和刪除的速度慢 查詢速度慢 不適合查詢操作 二 陣列array和集合arraylist的區別 陣列 array 集合 arraylist 儲存...