容器之Collection和Map

2021-08-01 22:54:31 字數 2032 閱讀 4551

---|collection: 單列集合

---|list: 有儲存順序, 可重複

---|arraylist:

陣列實現, 查詢快, 增刪慢

由於是陣列實現, 在增和刪的時候會牽扯到陣列

增容, 以及拷貝元素. 所以慢。陣列是可以直接

按索引查詢, 所以查詢時較快

---|linkedlist:

鍊錶實現, 增刪快, 查詢慢

由於鍊錶實現, 增加時只要讓前乙個元素記住自

己就可以, 刪除時讓前乙個元素記住後乙個元

素, 後乙個元素記住前乙個元素. 這樣的增刪效

率較高但查詢時需要乙個乙個的遍歷, 所以效率

較低---|vector:和arraylist原理相同, 但執行緒安全, 效率略低

和arraylist實現方式相同, 但考慮了執行緒安全問

題, 所以效率略低

---|set: 無儲存順序, 不可重複   先比較hashcode  如果相同 在比較equals

---|hashset

---|treeset

---|linkedhashset

---| map: 鍵值對

---|hashmap

---|treemap

---|hashtable

---|linkedhashmap

hashset新增元素的原理:

往hashset新增元素的時候,首先hashset會呼叫元素的hashcode方法得到元素的雜湊碼值,然後會經過一系列運算

就可以算出該元素在雜湊表中的儲存位置/

情況1:如果算出該元素的位置目前沒有任何元素儲存,那麼該元素可以直接儲存 

情況2: 如果算出該元素的位置目前已經存有其他的元素,那麼還會呼叫元素的equals方法與該位置的元素再比較一次。

如果equals方法返回的是false,那麼該元素允許儲存,如果euqlas方法返回的是true,那麼該元素被視為重複元素,不允許儲存。

------------------| treeset  底層是使用了紅黑樹(二叉樹)資料結構實現的, 特點:會對元素進行排序儲存。

treeset要注意的事項:

1. 往treeset新增元素的時候,如果元素本身具備自然順序的特性,那麼會根據元素自然順序的特性進行排序儲存。

2. 往treeset新增元素的時候,如果元素本身不具備自然順序的特性,那麼元素所屬的類必須要實現comparable介面,把元素的比較規則定義

在compareto方法上。

3. 往treeset新增元素的時候,如果元素本身不具備自然順序的特性,而且元素所屬的類沒有實現comparable介面,那麼必須要在建立

treeset物件的時候傳入比較器。

4. 如果比較的方法(compareto 或者compare )返回的是0的時候,那麼該元素就被視為重複元素,不允許新增。

比較器的定義格式:  自定義乙個類實現comparator介面即可。

class 類名  implements comparator

相同點: arraylist與vector底層都是使用了object陣列實現的。

不同點: 

1. arraylist是執行緒不同步的,操作效率高。 

vector是執行緒同步的,操作效率低。

2. arraylist是jdk1.2出現,vector是jdk1.0的時候出現的。

使用arraylist無參的建構函式建立乙個 物件時, 預設的容量是多少? 如果長度不夠使用時又自增增長多少?

arraylist底層是維護了乙個object陣列實現 的,使用無參建構函式時,object陣列預設的容量是10,當長度不夠時,自動增長0.5倍(1.7版本之前),1.7版本之後,右移一位。

迭代器的方法:

hasnext()   問是否有元素可遍歷。如果有元素可以遍歷,返回true,否則返回false 。

next()    獲取元素...

remove()  移除迭代器最後一次返回 的元素。

nosuchelementexception 沒有元素的異常。 

出現的原因: 沒有元素可以被迭代了。。。

容器(collection)初步

容器 集合 的分類 泛型 generic 本質是資料型別的引數化 提前告訴編譯器,在呼叫泛型時必須傳入實際型別 例 e即為在主函式中定義的傳入的實際型別 class mycollection public e get int a collectio介面方法 collection c new arra...

Java容器 Collection介面

1.容器和陣列的區別 容器,只能存放引用型別的資料,基本型別的資料需要轉換成它的包裝類,才可以使用,長度是可以變得。陣列,基本資料型別和引用資料型別都可以存放,長度是固定的,在定義的時候就已經被定義好了。2.collection 底層就是乙個陣列,每次新增資料的時候就會判斷容量是否能夠存放,不能夠存...

容器類 collection 常用方法總結

nsarray 常用方法 1.建立陣列物件 arraywithobjects 2.獲取某個下標 index 物件方法 objectatindex nsstring str1 arr1 objectatindex 0 3.已知物件,獲取位置下標 indexofobject nslog lu arr1 ...