之前一直對於java中容器的概念不理解,雖然學習過,但始終沒有認真理解過,這幾天老師提出了這樣一個問題,你怎麼理解java中的容器。瞬間就蒙了。因而各類搜資料學習了一下,下面是我學習後整理出來的的一些心得。歡迎各路大神指教java
在書寫程序時,咱們經常須要對大量的對象引用進行管理。爲了實現有效的歸類管理,咱們經常將同類的引用放置在同一個數據容器中。數組
返回值 | 方法名(參數類型 參數) | 描述 |
int | size() | 容器中對象的數目 |
boolean | isEmpty() | 是否爲空 |
void | clear() | 清空 |
boolean | contains(Object element) | 是否是包含element對象 |
boolean | add(Object element) | 添加element的對象 |
boolean | remove(Object element) | 移除element對象 |
Iterator | iterator() | 返回一個Iterator對象,用於遍歷容器中的對象 |
boolean | containsAll(Collection c) | 是否包含c容器中的全部對象 |
boolean | addAll(Collection c) | 把c容器中的全部對象添加到容器中 |
boolean | removeAll(Collection c) | 從容器中移除C容器中存在的全部對象 |
boolean | retainAll(Collection c) | 求當前的集合類與C容器的交集 |
Object[] | toArray() | 把容器中的全部對象轉換到對應的數組中 |
一、List:List容器的中的元素沒有順序,能夠重複。List容器中的元素都對應一個整型序號記載着其在容器中的位置。List主要分爲ArrayList和LinkedList,Vector是一個已經被棄用的類,由於他是線程同步的,而咱們平時使用的時候都是非同步的,使用同步的壞處就是會在記錄上加鎖,防止多個程序訪問同一條數據致使數據不一樣步。這樣會致使訪問速度變慢。Stack是知足「後進先出」規則的容器。數據結構
返回值 | 方法名(參數類型 參數) | 描述 |
void | sort(List) | 對List中的元素進行排序 |
void | shuffle(List) | 對List中的元素進行隨機排序 |
void | reverse(List) | 對List中的元素進行逆襲排序 |
void | fill(List, Object) | 用一個特定的對象重寫List容器 |
void | copy(List dest, List src) | 將src容器中的元素拷貝到dest容器中 |
int | binarySearch(List, Object) | 對順序的List容器,採用折半查找法尋找特定的對象 |
(1).LinkedList:其數據結構採用的是鏈表,這種結構的優點是刪除和添加的效率很高,但隨機訪問元素時效率較ArrayList類低。能夠實現全部的棧功能。函數
(2).ArrayList:是一個能夠動態增加的數組,其數據結構採用的是線性表,此種結構的優點是訪問和查詢十分方便,但添加和刪除的時候效率很低。(底層是數組)學習
二、Set:Set接口沒有提供額外的方法,但實現了Set接口的容器類中的元素是沒有順序,而且不能夠重複的。Set容器相似於數學中集合的概念。優化
(1).HashSet:Set類不容許其中存在重複的元素(集),沒法添加一個重複的元素。HashSet利用Hash函數進行了查詢效率上的優化,其中contain()方法常常被調用,以用於判斷相關元素是否被添加過。spa
(2).TreeSet:底層使用的是紅黑樹。線程
三、Queue(隊列):是一個知足「先進先出」的數據結構。對象
LinkedList提供了方法支持隊列操做,並實現了Queue接口,因此LinkedList是隊列的一種實現。blog
二、Map接口:Map提供的是一種鍵值對的方式存儲數據(鍵和值之間是一一對應的),Map的鍵值均可覺得null。Map能夠多維擴展,例如一我的擁有多個寵物,能夠這樣定義:Map<Person,List<pet>>
返回值 | 方法名(參數類型 參數) | 描述 |
Object | put(Object key, Object value) | 添加元素 |
Object | get(Object key) | 取出鍵值key對應的value值 |
Objest | remove(Object key) | 移除鍵值key對應的value值 |
boolean | containsKey(Object key) | 判斷Map容器中是否存在鍵值key |
boolean | containsValue(Object value) | 判斷Map中是否存在value值 |
int | size() | 返回Map容器的長度 |
boolean | isEmpty() | 判斷Map容器是否爲空 |
void | clear() | 清空Map容器 |
(1)HashMap:提供了key-value的鍵值對的數據存儲機制,能夠很方便的經過鍵值查找相應的元素,並且經過Hash散列機制,查找很方便。
Iterator接口:是一對象能夠遍歷並選擇序列中的對象全部實現了Collection接口的容器都有一個iterator方法,用於返回一個實現了Iterator的對象。Iterator對象爲迭代器,用於實現對容器中元素的遍歷。
感謝爲我提供學習資料、博客的大神們!!