JAVA編程思想學習(十一章)持有對象

JAVA 容器類的用途是 "保存對象" 並將其劃分爲兩個不一樣的概念:編程

1)Collection,一個獨立元素的序列  List  Set  Queue設計模式

2)Map 鍵值對數組

 

用數組轉出來的List,由於底層仍是個數組他有長度限制!併發

 

添加元素時,Collection 會根據不一樣的實現 調用 equals()spa

 

迭代器是一種設計模式,對於不一樣的容器使用一樣的方式去迭代元素設計

Iterator只能單向移動:並隨時準備好返回序列的第一個元素對象

1) next()排序

2) hasNext()隊列

3) remove()element

ListIterrator 是一個更增強大的Iterator,能夠雙向移動,能夠指向當前位置的前一個後後一個元素,可是隻能用於List的訪問

 

 ArrayList:擅長隨即訪問

 LinkedList: 擅長指定位置插入和刪除,但在隨即訪問上要遜色一些

   Stack 棧  一般是指"後進先出"LIFO 的容器,由於最後"壓入"棧的元素,第一個"彈出"棧,LinkedList具備可以直接實現棧的全部功能的方法,所以能夠直接將LinkedList做爲棧使用,

 

 

Set :

HashSet :無序的Set

TreeSet 自動排序的Set

LinkedHashSet 帶鏈表的Set

 

Queue 隊列是一個典型的先進先出FIFO容器,一端放入另外一端取出,放入容器的順序與取出的順序相同,在併發編程中至關重要.

LinkedList能夠用做Queue的一種實現,LinkedList能夠向上轉型爲Queue

queue.offer()將一個元素插入到隊尾

queue.peek() 和 element()方法 都將在不移除的狀況下返回隊頭,但Peek()在隊列爲空時返回null ,

element()會拋出noSuchElementException

poll() 和remove() 移除並返回隊頭,區別隊列爲空一個null,一個異常

 

PriorityQueue 優先級隊列, 好比在飛機場,當飛機臨近起飛時,這架飛機的乘客能夠在辦理登記手續時排到隊頭,若是是一個消息系統那麼,某些消息比其餘消息更重要,於是須要排到隊頭

 Vector,hashTable,Stack 已被淘汰

 

相關文章
相關標籤/搜索