Java集合框架一览笔录
2019獨角獸企業重金招聘Python工程師標準>>>
1、集合概念
集合類主要負責保存、盛裝其他數據,因此集合類也被稱為容器類。所以的集合類都位于java.util包下,后來為了處理多線程環境下的并發安全問題,java5還在java.util.concurrent包下提供了一些多線程支持的集合類。
集合分為兩大類:Collection、Map。
Collection(集合),每個元素存儲單個數據(Java基本數據類型或者對象),通常這些元素都服從某種規則
1) List必須保持元素特定的順序
2) Set不能有重復元素
3) Queue保持一個隊列(先進先出)的順序
Map(哈希),每個元素存儲 "鍵值對"的 數據。
2、集合與數組的區別?
數組在初始化時候就必須指定數組長度,因此數組只能保存固定個數的元素。
集合在初始化時候一般可以不指定集合大小,因此集合可以保存不確定個數的元素。
另外,集合的元素,存儲可以不僅是單個數據,還可以是 鍵值對 的數據。
3、集合類架構層次
Arrays和Collections是用來操作數組、集合的兩個工具類,例如在ArrayList和Vector中大量調用了Arrays.Copyof()方法,而Collections中有很多靜態方法可以返回各集合類的synchronized版本,即線程安全的集合實現,如果要用線程安全的結合類,首選java.util.concurrent并發包下的對應的集合類。
?java.util.concurrent并發包提供了基本線程安全的各類容器。其中隊列分為阻塞隊列、非阻塞隊列。
4、迭代器Iterator
通過Iterator,可以遍歷任何Collection類集合,Map的鍵集合或者值集合。
迭代器允許調用者在迭代過程中移除元素。
使用迭代器更加線程安全,因為它可以確保,在當前遍歷的集合元素被更改的時候,它會拋出ConcurrentModificationException。
什么是fail-fast
每次我們嘗試獲取下一個元素的時候,Iterator fail-fast屬性檢查當前集合結構里的任何改動。如果發現任何改動,它拋出ConcurrentModificationException。Collection中所有Iterator的實現都是按fail-fast來設計的。(并發容器則是fast-safe設計的)
fail-fast與fail-safe有什么區別?
Java.util包中的所有集合類都被設計為fail-fast的,而java.util.concurrent中的集合類都為fail-safe的。Fail-fast迭代器拋出ConcurrentModificationException,而fail-safe迭代器從不拋出ConcurrentModificationException。
?
更多請期待。(2017.9.19)
?
轉載于:https://my.oschina.net/langxSpirit/blog/1539700
總結
以上是生活随笔為你收集整理的Java集合框架一览笔录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件上传(input为file类型)
- 下一篇: 观点 | 容器内应该运行什么?