1. 集合的容量可變,陣列的容量不可變
2. 陣列只能儲存單一型別的資料,集合可以存放各種型別的資料
3.陣列可以存放基本資料型別,集合只能存放引用資料 型別,要存放基本資料型別, 就要引用基本資料型別的包裝類
陣列型別空間必須連續且支援下標訪問,集合記憶體空間可以連續可以不連續,以陣列為底層容器的集合支援下標訪問,鍊錶不支援
集合可以以一段連續的記憶體空間(陣列)作為底層容器,也可以用使用鍊錶作為底層容器,
使用鍊錶作為底層容器時,增刪不會移動大量元素,但陣列會移動大量元素(尾部增刪除外)
1.collections 是乙個工具類,具體可以實現shuffle()打亂元素順序,reverse將集合翻轉,sort()對元素進行公升序排序
2 collection 是set、list、vector集合的父類介面
1.有序性 list按元素存放順序確定存放的位置,所以集合內元素有序;
set集合不按存放順序確定存放的位置,所以set集合內元素無序。
2. list集合可以存放重複元素,set集合可以去重複.為保證一定存放的是無重複
需要重寫 hashcode()和equals()方法.
1. arraylist 底層是 陣列,元素存放的位置都是連續的,查改效率高,增刪效率低,執行緒不安全
2. linkedlist 底層是鍊錶,元素存放的位置不一定是連續的,增刪的效率高,查改的效率低,執行緒不安全
3. vector 底層是陣列,其中的很多方法加鎖,執行緒安全.相對於arraylist 和linkedlist而言,效率很低
arraylist和vector資料儲存是連續的,所以它們支援用下標來訪問元素,索引資料的速度比較快。
vector預設擴充為原來的兩倍(每次擴充空間的大小可以設定),arraylist預設擴充為原來的1.5倍
vector是執行緒安全的,arraylist不是執行緒安全的。正是由於vector提供了執行緒安全的機制,其效能上也要稍遜於arraylist
linkedlist是採用雙向列表來實現的,隨機訪問則效率較低,但是插入元素時不需要對資料進行移動,因此插入效率較高。同時,linkedlist是非執行緒安全的容器
1.hashmap是非同步的,執行緒不安全;hashtable是同步的,執行緒安全
2.hashmap可以存乙個key為空值,value可以存任意個,hashtable不能存空值
3.hashmao效率高,hashtable效率低
hashmap繼承了abstractmap,hashtable繼承dictionary抽象類,兩者均實現map介面
hashtable:初始size 為11,newsize=olesize*2+1
hashmap:初始size為16,擴容:newsize = oldsize*2,裝載因子都是0.75
兩者計算hash的方法不同:
hashtable計算hash是直接使用key的hashcode對table陣列的長度直接進行取模
hashmap計算hash對key的hashcode進行了二次hash,以獲得更好的雜湊值,然後對table陣列長度取摸
在hashmap 中,null 可以作為鍵,這樣的鍵只有乙個;可以有乙個或多個鍵所對 應的值為null。在hashmap 中不能用get()方法來判斷hashmap 中是否存在某個鍵,而應該用containskey()方法來判斷。hashtable 的鍵值都不能 為null,所以可以用get()方法來判斷是否含有某個鍵。
1. hashmap是執行緒不安全的
2. concurrenthashmap是線層安全的,是hashtable 和hashmap的結合體.concurrenthashmap採用了分段鎖技術,不會像hashtable把全表鎖住,也不會像hashmap不上鎖.
3. concurrenthashmap中一次鎖住乙個桶。concurrenthashmap預設將hash表分為16個桶
3.1 hashmap在多執行緒情況下操作不能保證資料同步。
3.2 concurrenthashmap多執行緒操作同樣不能保證資料同步。
首先有乙個每個元素都是鍊錶(可能表述不準確)的陣列,當新增乙個元素(key-value)時,就首先計算元素key的hash值,以此確定插入陣列中的位置,但是可能存在同一hash值的元素已經被放在陣列同一位置了,這時就新增到同一hash值的元素的後面,他們在陣列的同一位置,但是形成了鍊錶,同一各煉表上的hash值是相同的,所以說陣列存放的是鍊錶。而當鍊錶長度太長時,鍊錶就轉換為紅黑樹,這樣大大提高了查詢的效率
linkedhashmap 是hashmap的乙個子類,但是內部維持了乙個雙向鍊錶,儲存了記錄的插入順序,在用iterator遍歷linkedhashmap時,先得到的記錄肯定是先插入的.也可以在構造時用帶引數,按照應用次數排序。
在遍歷的時候會比hashmap慢,不過有種情況例外,當hashmap容量很大,實際資料較少時,遍歷起來可能會比 linkedhashmap慢,因為linkedhashmap的遍歷速度只和實際資料有關,和容量無關,而hashmap的遍歷速度和他的容量有關。
每日問答 PMP題庫訓練2
1.最近一次報告中的工作績效資料顯示計畫價值 pv 為600,掙值 ev 為720,專案目前的狀態是什麼?a.無法確定專案績效 b.專案落後於進度 c.專案提前於進度 d.專案符合預算 2.乙個全球專案即將完成,然而,由於質量低劣而暫停向其支付款項的 商威脅要採取法律行動來終止該專案。專案經理首先應...
每日問答 特徵選擇有哪些方法?
filter 過濾式,先對資料集進行特徵選擇,然後再訓練學習器。1 方差選擇法 使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵。2 相關係數法 使用相關係數法,先要計算各個特徵對目標值的相關係數以及相關係數的p值。3 卡方檢驗 經典的卡方檢驗是檢驗定性自變數對定性因變數...
每日練習 2
華為2016年機試題目 共2題 時間限制 1秒 空間限制 65536k 老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.輸入描述 輸入包括多組測試資料。每組輸入第一行是兩個正整數n和m 0 n 30000,0 m 5000 分別代表...