JAVA集合框架有那些內容
Java提供了數種持有物件的方式,包括語言內建的Array,還有就是utilities中提供的容器類(container classes),又稱群集類(collection classes)。集合在java中非常重要,在討論之前,先來看幾個面試中的經典問題。
1 Collection 和 Collections的區別。
2 List, Set, Map是否繼承自Collection介面。
3 ArrayList和Vector的區別。
4 HashMap和Hashtable的區別。
篇尾有答案,我們開始正題。
集合Collection介面
--Collection 是任何物件組,元素各自獨立,通常擁有相同的套用規則。Set List由它派生。
基本操作增加元素add(Object obj); addAll(Collection c);
刪除元素 remove(Object obj); removeAll(Collection c);
求交集 retainAll(Collection c);
訪問/遍歷集合元素的好辦法是使用Iterator介面(迭代器用於取代Enumeration)
Public interface Iterator{
Public Boolean hasNext(0;
Public Object next(0;
Public void remove(0;
}
集set
--沒有重複專案的集合
有三種特定型別的集可用
HashSet-基於雜湊表的集,加進雜湊表的元素要實現hashCode()方法
LinkedHashSet-對集迭代時,按增加順序返回元素
TreeSet-基於(平衡)樹的資料結構
清單List
--位置性集合。加進清單的元素可以加在清單中特定位置或加到末尾
有兩個特定版本
ArrayList(陣列表)-類似於Vector,都用於縮放陣列維護集合。區別:
一.同步性:Vector是執行緒安全的,也就是說是同步的,而ArrayList是執行緒序不安全的,不是同步的
二.資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半
LinkedList(連結串列)-是雙向連結串列,每個節點都有兩個指標指向上一節點和下一節點。
用在FIFO,用addList()加入元素 removeFirst()刪除元素
用在FILO,用addFirst()/removeLast()
ListIterator提供雙向遍歷next() previous(),可刪除、替換、增加元素
對映表Map
--用於關鍵字/數值對,像個Dictionary
處理Map的三種集合
關鍵字集KeySet()
數值集value()
專案集enrySet()
四個具體版本
HashMap-雜湊表的通用對映表
LinkedHashMap-擴充套件HashMap,對返回集合迭代時,維護插入順序
WeakHashMap-基於弱引用雜湊表的對映表,如果不保持對映表外的關鍵字的引用,則記憶體回收程式會回收它
TreeMap-基於平衡樹的對映表
Collections類,用於同步集合,還能改變集合只讀方式的類
e.g.:
Map mp=new HashMap()
mp=Collections.synchronizedMap(mp); //生成執行緒安全的對映表
mp=Collections.unmodifiableMap(mp); //生成只讀對映表
Comparable 自然順序的排序類 Comparator 面向樹的集合排序類
容器分類學(Container taxonomy)
集合介面: Collection List Set;Map Iterator ListIterator。
抽象類: AbstractCollection AbstractList AbstractSet AbstractMap AbstractSequentiaList。
Implementations
Hash TableResizable ArrayBalanced TreeLinked List
InterfacesSetHashSetTreeSet
ListArrayListLinkedList
MapHashMapTreeMap
相關文章
- Document物件內容集合物件
- input 文字框內容居中
- java集合中那些知識Java
- java 物件序列化要序列化那些內容Java物件
- JavaScript 文字框輸入內容同步JavaScript
- jQuery文字框輸入內容同步jQuery
- 點選文字框實現文字框內容選中效果
- IE8 input框內容上下居中
- jQuery文字框內容輸入同步功能jQuery
- 在echarts中自定義提示框內容Echarts
- css input文字框中的內容居中效果CSS
- java培訓內容Java
- 軟體效能測試的內容有那些?
- ueditor文字框初始化如何顯示預設內容,以及文字框獲取焦點後清空預設內容
- js多個文字框輸入內容同步效果JS
- JavaScript操作下拉框動態顯示內容JavaScript
- Java(SE)內容回顧Java
- 那些經常被問的JAVA面試題(1)—— 集合部分Java面試題
- jQuery點選文字框清除內容程式碼例項jQuery
- CSS 自適應內容寬度的輸入框CSS
- 中文網際網路內容的枯萎讓我懷念早期網路那些優秀內容
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- javascript驗證輸入文字框內容是否為數字JavaScript
- JavaScript 驗證輸入文字框內容是否為數字JavaScript
- 兩個文字框同步輸入內容程式碼例項
- jquery監聽文字框內容變化程式碼例項jQuery
- 實現文字框輸入內容提示程式碼例項
- webdriver中利用js來向富文字框書寫內容WebJS
- Java內功心法,Set集合的詳解Java
- web前端,使用HTML5+CSS+JS框架有那些好處Web前端HTMLCSSJS框架
- java 獲取URL連結 內容Java
- java 資料探勘 URL 內容流Java
- Java核心內容面試題詳解Java面試題
- 實時監聽文字框內容變化程式碼例項
- app直播原始碼,監聽EditText輸入框內輸入內容的變化APP原始碼
- 一段典型的PHP程式都包含那些內容呢?薦PHP
- [- Flutter必備 -] 聊聊那些彈框Flutter
- react封裝一個可自定義內容的modal彈框元件React封裝元件