JAVA深化篇_09——容器介紹,容器是什么,有什么結構,看了這篇博文你還不明白??
容器介紹
我們還是老樣子,在正式介紹容器之前,大家已經看到我的封面換上了我們的一人一城老司機——德克諾維斯基,隨著NBA新賽季利拉德遠赴密爾沃基,NBA的一人一城傳奇又有誰能繼續書寫,當初老司機二十年的堅守,這份信念誰來繼承,難回首吶兄弟們!!大家怎么看呢??
容器簡介
容器,是用來容納物體、管理物體。生活中,我們會用到各種各樣的容器。如鍋碗瓢盆、箱子和包等。
程序中的“容器”也有類似的功能,用來容納和管理數據。==比如,如下新聞網站的新聞列表、教育網站的課程列表就是用“容器”來管理:
視頻課程信息也是使用“容器”來管理:
開發和學習中需要時刻和數據打交道,如何組織這些數據是我們編程中重要的內容。 我們一般通過“容器”來容納和管理數據。事實上,我們前面所學的數組就是一種容器,可以在其中放置對象或基本類型數據。
數組的優勢:是一種簡單的線性序列,可以快速地訪問數組元素,效率高。如果從查詢效率和類型檢查的角度講,數組是最好的。
數組的劣勢:不靈活。容量需要事先定義好,不能隨著需求的變化而擴容。比如:我們在一個用戶管理系統中,要把今天注冊的所有用戶取出來,那么這樣的用戶有多少個?我們在寫程序時是無法確定的。因此,在這里就不能使用數組。
基于數組并不能滿足我們對于“管理和組織數據的需求”,所以我們需要一種更強大、更靈活、容量隨時可擴的容器來裝載我們的對象。 這就是我們今天要學習的容器,也叫集合(Collection)。
容器的結構
單例集合 — —雙例集合
單例集合
Collection接口介紹
Collection 表示一組對象,它是集中、收集的意思。Collection接口的兩個子接口是List、Set接口。
Collection接口中定義的方法
| 方法 | 說明 |
|---|---|
| boolean add(Object element) | 增加元素到容器中 |
| boolean remove(Object element) | 從容器中移除元素 |
| boolean contains(Object element) | 容器中是否包含該元素 |
| int size() | 容器中元素的數量 |
| boolean isEmpty() | 容器是否為空 |
| void clear() | 清空容器中所有元素 |
| Iterator iterator() | 獲得迭代器,用于遍歷所有元素 |
| boolean containsAll(Collection c) | 本容器是否包含c容器中的所有元素 |
| boolean addAll(Collection c) | 將容器c中所有元素增加到本容器 |
| boolean removeAll(Collection c) | 移除本容器和容器c中都包含的元素 |
| boolean retainAll(Collection c) | 取本容器和容器c中都包含的元素,移除非交集元素 |
| Object[] toArray() | 轉化成Object數組 |
由于List、Set是Collection的子接口,意味著所有List、Set的實現類都有上面的方法。
JDK8之后,Collection接口新增的方法(將在JDK新特性和函數式編程中介紹):
新增方法 說明 removeIf 作用是刪除容器中所有滿足filter指定條件的元素 stream parallelStream stream和parallelStream 分別返回該容器的Stream視圖表示,不同之處在于parallelStream()返回并行的Stream,Stream是Java函數式編程的核心類。 spliterator 可分割的迭代器,不同以往的iterator需要順序迭代,Spliterator可以分割為若干個小的迭代器進行并行操作,可以實現多線程操作提高效率
List接口介紹
List接口特點
List是有序、可重復的容器。
**有序:**有序(元素存入集合的順序和取出的順序一致)。==List中每個元素都有索引標記。==可以根據元素的索引標記(在List中的位置)訪問元素,從而精確控制這些元素。
**可重復:**List允許加入重復的元素。更確切地講,List通常允許滿足 e1.equals(e2) 的元素重復加入容器。
List接口中的常用方法
除了Collection接口中的方法,List多了一些跟順序(索引)有關的方法,參見下表:
| 方法 | 說明 |
|---|---|
| void add (int index, Object element) | 在指定位置插入元素,以前元素全部后移一位 |
| Object set (int index,Object element) | 修改指定位置的元素 |
| Object get (int index) | 返回指定位置的元素 |
| Object remove (int index) | 刪除指定位置的元素,后面元素全部前移一位 |
| int indexOf (Object o) | 返回第一個匹配元素的索引,如果沒有該元素,返回-1. |
| int lastIndexOf (Object o) | 返回最后一個匹配元素的索引,如果沒有該元素,返回-1 |
雙例集合
Map接口介紹
==Map接口定義了雙例集合的存儲特征,它并不是Collection接口的子接口。雙例集合的存儲特征是以key與value結構為單位進行存儲。==體現的是數學中的函數 y=f(x)感念。
Map與Collecton的區別:
- Collection中的容器,元素是孤立存在的(理解為單身),向集合中存儲元素采用一個個元素的方式存儲。
- Map中的容器,元素是成對存在的(理解為現代社會的夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值。
- Collection中的容器稱為單列集合,Map中的容器稱為雙列集合。
- Map中的集合不能包含重復的鍵,值可以重復;每個鍵只能對應一個值。
- Map中常用的容器為HashMap,TreeMap等。
Map接口中常用的方法表
| 方法 | 說明 |
|---|---|
| V put (K key,V value) | 把key與value添加到Map集合中 |
| void putAll(Map m) | 從指定Map中將所有映射關系復制到此Map中 |
| V remove (Object key) | 刪除key對應的value |
| V get(Object key) | 根據指定的key,獲取對應的value |
| boolean containsKey(Object key) | 判斷容器中是否包含指定的key |
| boolean containsValue(Object value) | 判斷容器中是否包含指定的value |
| Set keySet() | 獲取Map集合中所有的key,存儲到Set集合中 |
| Set<Map.Entry<K,V>> entrySet() | 返回一個Set基于Map.Entry類型包含Map中所有映射。 |
| void clear() | 刪除Map中所有的映射 |
好了,下次博文我們細細展開來說單例集合和雙例集合中都有哪些具體容器,感謝大家觀看,求三連,不迷路!
浙公網安備 33010602011771號