問題1:集合和陣列的區別?
collection主要有三個子介面:
set——表示不允許有重複元素的集合,且無序;
list——表示允許有重複元素的集合,且有序;
queue——佇列,先進先出,jdk1.5新增,queue主要用於儲存資料,而不是處理資料;
stack——繼承自vector,實現乙個後進先出的堆疊。
特點:有序可重複
遍歷方式:通過下標;增強for迴圈(foreach);迭代器iterator
對應的實現類:
arraylist(陣列結構):
資料結構:預設長度為10。增長方式:當前長度*3/2+1
特點:查詢速度快,插入刪除效率低(會引起其他元素位置改變)
linkedlist(鍊錶結構):
特點:插入刪除快,查詢效率低
問題二:arraylist和linkedlist的區別
arraylist查詢快,linkedlist插入刪除快
問題三:collection介面的remove()方法和lterator介面的remove()方法區別?
前者必須指定你要刪除的項,也就是說要傳遞引數,根據該引數去集合中尋找與這一項匹配的,而尋找的這乙個過程是採用單鏈表結構查詢,因此效率低,需要從集合中乙個乙個遍歷才能找到該物件;
而後者是結合next()方法使用,比如集合中要沒隔一項刪除一項就是使用lterator的remove()方法效率更高。
在容錯方面來講,使用lterator遍歷時,使用collection的remove()會報錯,是因為使用collection的remove()之後,集合的個數會發生改變,而lterator內部個數不會變,不一致就會發生異常
特點:無序且不可重複
問題四:hashset、treeset、linkedhashset的區別?
需要速度快的集合使用hashset;
需要集合有排序功能的使用treeset;
需要集合有順序儲存功能的使用linkedhashset。
以key-value的形式儲存資料,且鍵(key)不能重複,可以存在乙個null值,值(value)可以重複且可以存在多個null值
問題五:hashmap、treemap、linkedhashmap的區別?
在map中插入、刪除和定位元素,hashmap是最好的選擇
需要集合有排序功能的使用treemap
需要集合有順序儲存功能的使用linkedhashmap
問題六:hashmap和hashset的區別?
hashmap是實現了map介面,儲存鍵值對,呼叫put()向map中新增元素,hashmap使用key計算hashcode,hashmap相對hashset要快,因為它是使用唯一的鍵獲取物件
hashset實現了set介面,儲存物件,呼叫add()向set中新增元素,hashset使用成員物件計算hashcode
問題七:hashmap的實現原理?
通過put和get儲存和獲取物件,儲存物件時,我們將k/v傳給put方法時,它呼叫hashcode計算hash從而得到bucket位置,進一步儲存,hashmap會根據當前bucket的占用情況自動調整容量。獲取物件時,我們將k傳遞給get,它呼叫hashcode計算hash從而得到bucket的位置,並進一步呼叫equals()方法確認鍵值對
簡單來講:put方法會在map集合中通過key來尋找該key在map集合中的hash位置,並以該hash位置來儲存值,而get通過key尋找該key的hash碼,從而通過equals()判斷hash是否相同而取出該值
問題八:list、set、map之間的區別?
list和set都繼承collection,map自身就是最高端
list
setmap
可以允許重複的元素
不允許重複的元素
鍵值對儲存,鍵必須唯一,但是值可以重複
可以插入多個null元素
只允許乙個null元素
鍵只允許乙個null,值可以允許多個null
有序的容器,插入的順序和輸出的順序一樣
無序容器
無序容器
集合框架總結
list 儲存有序,有索引,可以重複 arraylist 底層是陣列實現的,執行緒不安全,查詢和修改快,增和刪較慢 linkedlist 底層是鍊錶實現的,現成不安全,增和刪較快,查詢和修改較慢 vector 底層是陣列實現的,現成安全,增刪改查都較慢 如何查詢和修改多,用arraylist 如果增...
集合框架總結
陣列 之前使用陣列儲存資料 陣列只能存同意型別的資料 陣列長度一旦確定不能改變 陣列物件中基本沒有可用呼叫的方法來運算元組 陣列型別是使用 已有的型別 組合而成 集合 現在使用集合儲存資料 集合中能儲存任意型別的物件 集合的長度可以自動增長 集合物件本身有很多方法可以呼叫,來操作集合中的資料 集合是...
集合框架學習總結
集合實際用來儲存物件 object 但需要注意的是,集合存放的實質上是物件的位址。接下來我們先來看一下集合框架圖,如下 同一顏色方框,我將它們視為同一級 首先由上圖確認一下它們的關係 collection 介面 set 介面 儲存元素特點 元素無序,元素不可以重複,與list集合體系本質區別就是無索...