每日問答2

2021-09-26 21:17:15 字數 2497 閱讀 6655

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 分別代表...