java常見資料集合分析

2021-08-05 23:40:44 字數 2277 閱讀 4467

new hashmap()時,不會分配陣列空間,在第一次新增值時會初始化陣列tab,預設大小16,載入因子0.75,當map中物件個數到達閾值(預設基礎閾值threshold=16*0.75)進行陣列按threshold=threshold << 1兩倍擴容

int index =

(n -1)

& hash;

// 物件節點所在陣列下標

存放數字時無序,不可重複key值

底層是雜湊表的資料結構,如下。這裡提一下,hashmap在jdk1.8引入了紅黑樹結構

hashset是基於hashmap實現的,可以把它當成乙個value為空的hashmap,是對hashmap的封裝和利用。實現set介面,按物件儲存,按儲存物件計算hash值,要全部迭代才能一一讀出物件。

存放數字時無序,不可重複值

底層資料結構與hashmap一致

執行緒不安全

實現map介面,按鍵值對儲存,按鍵計算hash值,可直接用key值獲取value物件,比較方便

new hashtable()時,會分配陣列空間tab,預設大小11,載入因子0.75

底層是雜湊表的資料結構

底層資料結構與hashmap一致

在涉及修改的方法上加上了synchronized關鍵字,執行緒安全

實現list介面,存放資料無序

預設1.5倍擴容

oldcapacity +

(oldcapacity >>

1)

底層資料結構為陣列執行緒不安全

stack就是把vector陣列封裝成,關鍵操作加上了synchronized,執行緒安全

vector底層資料結構為陣列,與arraylist基本一致,關鍵修改操作加上了synchronized,執行緒安全

vector在未指定增長因子capacityincrement時 是1倍擴容

oldcapacity +

((capacityincrement >0)

? capacityincrement : oldcapacity)

資料集合的基本介面有兩種,collection和map。實現collection介面的子介面有set,list,queue,他們的實現類應該很清楚了,是我們常用的hashset,arraylist等,collection是它們的公共介面。而這裡想提到的是collection中的三個易混淆方法,用於集合的交並差集,retainall,containsall和removeall:

boolean retainall(collection> c):呼叫此方法除去collection中不存在於c中的元素。換句話說,如果collection中的元素在c中沒有找到,則會去掉collection中的這一元素,並且返回true(collection被改變則會返回true);如果collection中的所有元素在c中都可以找到,則不會改變collection並且返回false。這裡也就是相當於乙個另類的求兩個集合的交集。

例如:

c1: 1,2,2

c2: 1,2

c1.retainall(c2);//這裡會返回false,因為c1中的元素在c2中都存在,不需要改變,則返回false

boolean containsall(collection> c):呼叫此方法判斷collection是否包含c中的所有元素

boolean removeall(collection> c):呼叫此方法去掉所有collection中存在於c中的元素,和retainall差不多,如果colletion沒有改變,則返回false,否則返回true。這裡也就是相當於乙個另類的求兩個集合的差集。

例如:

c1: 1,2,2,3

c2: 1,2

c1.removeall(c2);//這裡會返回true,因為c1中的元素在c2中都存在,c1中的元素除了3之外會被全部移除,c1最後輸出只有3

Java中常見資料轉型

1.int short exp short shortvar 0 int intvar 0 shortvar short intvar 2.short int exp short shortvar 0 int intvar 0 intvar shortvar 3.int string exp int...

常見資料探勘分析方法介紹

引自 itongji.cn 下面介紹十種資料探勘 data mining 的分析方法,以便於大家對模型的初步了解,這些都是日常挖掘中經常遇到的演算法,希望對大家有用!甚至有資料探勘公司,用其中的一種演算法就能獨步天下 1 基於歷史的mbr分析 memory based reasoning mbr 基...

常見資料庫的分析

現在公司中常用的資料庫有以下幾種 1 access 不常用 access是一種桌面資料庫,只適合資料量少的應用,或者是單機的程式,這樣子訪問的效率特別高。access資料庫有一定的極限,當資料量達到100m的時候,會出現伺服器假死,或者消耗掉伺服器的記憶體導致伺服器崩潰。2 sql server 大...