java容器類類庫的用途是保存對(duì)象。Java集合框架中主要有兩種容器:Collection和Map。集合框架包括以下三個(gè)內(nèi)容:接口、類、算法。接口是集合抽象的數(shù)據(jù)類型。類是接口的具體實(shí)現(xiàn)。算法是對(duì)象的方法的一些計(jì)算。
集合框架圖如下:
圖中符號(hào)意義:
接口:用短線虛線框表示
抽象類:用長(zhǎng)虛線
類:用實(shí)線框表示
接口和接口之間的實(shí)現(xiàn):用虛線和空白三角表示
類與類之間,以及類與接口之間的實(shí)現(xiàn):用實(shí)線和空白三角
produce關(guān)系-即之間有關(guān)系,但并非直接實(shí)現(xiàn):虛線和實(shí)心三角

集合接口:
| 集合接口 | 描述 |
|---|---|
| Collection | 最基礎(chǔ)的集合接口,存儲(chǔ)不唯一,無序的對(duì)象 |
| List | 存儲(chǔ)不唯一,有序的對(duì)象 |
| Set | 存儲(chǔ)的對(duì)象是唯一的,無序的 |
| Map | 存儲(chǔ)一組鍵值對(duì) |
| Queue | 隊(duì)列,先進(jìn)先出 |
| SortedSe | 繼承Set接口,元素是有序的 |
| SortedMap | 按key值升序排列 |
| Map.Entry | 描述在一個(gè)Map中的一個(gè)元素(鍵/值對(duì))。是一個(gè)Map的內(nèi)部類。 |
| ... | ... |
List查找效率高,Set查找效率低,List刪除和插入效率低,Set刪除和插入效率高。
數(shù)組和集合區(qū)別:數(shù)組的長(zhǎng)度是固定的,集合長(zhǎng)度不固定。數(shù)組只能保存基本類型和對(duì)象。集合可以保存對(duì)象和基礎(chǔ)類型的包裝類。
Map和List 以及Set并不是同級(jí)關(guān)系。List 和Set是Collection的子接口,Map并不屬于Collection接口系列。
集合抽象類:
| 集合抽象類 | 描述 |
|---|---|
| AbstractCollection | 實(shí)現(xiàn)了大部分的集合接口 |
| AbstractList | 繼承于AbstractCollection 并且實(shí)現(xiàn)了大部分List接口 |
| AbstractSet | 繼承于AbstractCollection 并且實(shí)現(xiàn)了大部分Set接口 |
| ... | ... |
集合具體類:
| 集合具體類 | 描述 |
|---|---|
| ArrayList | 實(shí)現(xiàn)了List接口,實(shí)現(xiàn)了長(zhǎng)度可變的數(shù)組 |
| HashSet | 實(shí)現(xiàn)了Set接口,存儲(chǔ)是唯一的,無序的元素,可最多有一個(gè)null元素 |
| TreeSet | 實(shí)現(xiàn)了Set接口,可以用來實(shí)現(xiàn)排序等功能 |
| HashMap | 實(shí)現(xiàn)了Map接口,可根據(jù)鍵的hashcode值存儲(chǔ)元素,可最多有一個(gè)null鍵 |
| TreeMap | 繼承了AbstractMap |
| LinkedHashMap | 繼承于HashMap,使用元素的自然順序?qū)υ剡M(jìn)行排序 |
| HashTable | Hashtable繼承于Dictionary類,實(shí)現(xiàn)了Map接口Hashtable 的函數(shù)都是同步的 |
| Vector | 該類和ArrayList非常相似,但是該類是同步的,可以用在多線程的情況,該類允許設(shè)置默認(rèn)的增長(zhǎng)長(zhǎng)度,默認(rèn)擴(kuò)容方式為原來的2倍 |
| Stack | 棧是Vector的一個(gè)子類,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的后進(jìn)先出的棧 |
迭代器:
主要用于遍歷Collection集合中的元素,使你能夠通過循環(huán)來得到或刪除集合的元素。
泛型方法:
在調(diào)用這個(gè)接口的時(shí)候可以使用不同的參數(shù)類型。注意類型參數(shù)只能代表引用型類型,不能是基礎(chǔ)類型。
public static < E > void printArray( E[] inputArray )
{
// 輸出數(shù)組元素
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
泛型類
public class Box<T> {
private T t;
public void add(T t) {
this.t = t;
}
public T get() {
return t;
}
有了Java泛型,可以指定容器存放對(duì)象類型。
例如:
List<String> name = new ArrayList<String>();
List<Integer> age = new ArrayList<Integer>();
List<Number> number = new ArrayList<Number>();
參考鏈接:http://www.runoob.com/java/java-collections.html
http://www.cnblogs.com/buwuliao/p/9305377.html
https://blog.csdn.net/a2011480169/article/details/52047600