集合框架(JCF)java collections frameworkjava
框架:爲了實現某一目的/功能而預先提供的一系列封裝好的具備繼承或實現關係的類與接口。算法
一、這種框架是高性能的,對基本類集(動態數組、連接表、樹、散列表)的實現是高效率的。數組
二、框架必須容許不一樣的類集以相同的方式和高度互相操做方式工做。安全
三、類集必須是容易擴展和修改的。框架
爲了實現這些目標,類集框架被設計成包含了一組標準接口的類與接口:性能
Collection 是存放一組單值的最大接口。線程
List——列表設計
是Collection的子接口,裏面的內容容許重複。code
List的特色:線性。即:有序。元素放入的順序和元素的存儲順序保持一致。對象
表象上:List最大的特色就是有下標。
ArrayList: 就是做爲一個數組的封裝出現的,底層就是數組。
LinkedList:底層封裝的是一個雙向鏈表。
一、查找、修改用的多的時候用ArrayList。
二、增長、刪除用的多的時候(特別是往中間增長、刪除)用LinkedList。
三、線程安全,數據量大的時候考慮用vector。
泛型<>:用來控制集合只能操做某一種數據類型。
遍歷:一、普通for循環遍歷。
二、使用迭代器Iterator完成遍歷。——沒有下標從頭至尾走一遍,不能操做數組。
三、for-each循環語句,底層封裝的就是迭代器,語法簡單,還能夠操做數組。推薦使用。
Set——集
是collection的子接口,裏面的內容不容許重複。
特色:不能放置重複元素,無序存放元素。
表象上:Set沒有下標。
HashSet判斷兩元素不重複:一、調用equals方法比較兩對象
二、兩元素的hashcode值保持一致
只有這兩個條件同時知足,java才認爲是同一對象。
全部重寫了equals方法通常要重寫hashcode方法,讓equals返回true的時候,hashcode返回的值應該同樣。
hashSet只有增、刪、求長度和遍歷等操做。
遍歷:一、迭代器
二、for-each
Map——映射
是存放一對值的最大接口,全部的元素都以鍵和值的方式存儲。
特色:鍵值對——鍵要求惟一,值能夠重複
經常使用子類:hashMap、properties(專用於操做屬性文件)
hashMap
經常使用操做:增、刪、改、查、容、遍歷
遍歷的時候:不能同時遍歷全部的鍵和值,只能單獨遍歷鍵與值。
鍵在遍歷的時候用Set類型來接。
值在遍歷的時候用Collection來接。
hashMap與hashTable比較:一、hashMap非線性安全,hashTable是線性安全的。
二、hashMap容許null來作鍵/值,hashTable不容許。
properties
經常使用操做:增、刪、查、改、容、存、取。
存的時候,調用的是.store方法存文件,
取的時候,調用.load方法取文件。
文件類型:.properties——固定格式的文本文件,將是工做中使用率第二的配置文件。
Iterator
集合的輸出接口,從前到後輸出指定集合中的內容。
ListIterator
是Iterator的子接口,能夠進行雙向輸出。
Enumeration
是最先的輸出接口,用於輸出指定集合中的內容。
collections
集合操做的算法類
包括排序、求最大、最小、反轉、隨機混排等操做
排序的時候,由於是對對象排序,因此應按必定的業務邏輯的天然順序排序。
比較器:
comparable接口:內部比較器
可對任意數組排序,java泛型技術,二叉樹排序原理
一、類實現comparable接口
二、重寫compareTo方法
compareTo方法返回的是int類型數據:1表示大於,-1表示小於,0表示相等。
comparator接口:外部比較器
補救的作法
此接口同樣須要重寫方法,但方法接收兩個對象,返回值依然是一、-一、0;
SortedSet
單值的排序接口,實現此接口的集合類,裏面的內容能夠使用比較器排序。
SortedMap
存放一對值的排序接口,裏面內容按照key排序,使用比較器排序。
Queue
隊列接口,此接口的子類能夠實現隊列操做。
Map.Entry
Map.Entry的內部接口,每一個
Map.Entry對象都保存着一對key——value的內容,每一個map接口中都保存有多個Map.Entry接口實例。
總的來講:
一、若是要求線程安全,使用Vector、Hashtable。
二、若是不要求線程安全,使用ArrayList(查找、修改較多的時候使用)、LinkedList(刪除、增長較多的時候使用)、HashMap(要求鍵值對映的時候使用)。
三、若是要求鍵值對應,使用HashMap、HashTable。
四、若是數據量大、又要求線程安全考慮使用Vector。