1. 程式人生 > >java容器類的繼承結構

java容器類的繼承結構

lin 操作方法 public 叠代器 類庫 必須 extend 設計模式 dha

摘要: java容器類的繼承結構

Java容器類庫定義了兩個不同概念的容器,Collection和Map

  • Collection 一個獨立元素的序列,這些元素都服從一條或多條規則。List必須按照插入的順序保存元素。Set不能有重復元素。Queue按照排隊規則來確定對象產生的順序。

技術分享

(文中Jdk源碼版本無特殊說明均為jdk1.8.0_101)

 public interface Collection<E> extends Iterable<E> {

可以看到,java定義了Collection接口和內部集合的基本操作方法,Collection默認可以進行對集合末端添加元素,刪除指定元素等操作。List、Set、Queue接口都繼承自Collection並定義了各自不同的方法。如果你想學習Java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裏面有大量的學習資料可以下載。

  • Map 一組成對的”鍵值對”對象,允許我們使用鍵來查找值。

技術分享

 public interface Map<K,V> {

Map內部接口Entry<K,V>對應著Map的鍵值對。

具體介紹

叠代器

先介紹一下叠代器。叠代器本身也是一種設計模式,設計的初衷在於:容器的實現由很多種,而我們想對容器進行遍歷操作的話,首先不應該關心容器實現的細節,其次遍歷操作應該是輕量級的。叠代器統一了對容器的訪問方式,同時創建它的代價很小。值得註意的是,Iterator只能單向移動。

 public interface Iterator<E> {

通過容器的iterator()方法拿到容器的叠代器

叠代器的next()獲取下一個元素

hasNext()判斷是否還有元素

remove()刪除指定元素

ListIterator

ListIterator是Iterator的擴展之內,用於各種List類訪問,支持雙向移動。

Collection

List

List 承諾可以將元素維護在特定的序列中.List接口在Collection的基礎上添加了大量的方法,使得可以再List中間插入和移除元素。

 public interface List<E> extends Collection<E> {

技術分享

有兩種類型的List,ArrayList和LinkedList

List類型優點缺點底層實現
ArrayList 隨機訪問元素較快 中間元素的插入和刪除較慢 數組
LinkedList 中間元素的插入和刪除,順序訪問的優化 隨機訪問元素較慢 雙向鏈表

Set

Set不保存重復的元素,通常用於快速查找元素。值得一提的是,Set具有與Collection完全一樣的接口,沒有任何額外的功能。 存入的元素必須定義equals()方法

Set類型使用場景底層實現
HashSet 快速查找,元素必須定義hashCode() 鏈表
TreeSet 保持次序,元素必須實現Comparable接口 紅-黑樹結構
LinkedHashSet 維護次序的HashSet, 元素必須定義hashCode() 鏈表

技術分享

Queue

除了並發應用,Queue僅有的兩個實現是LinkedList和PriorityQueue, 其中LinkedList同時實現了List, Deque接口。它們的差異在於排序行為而不是性能。

技術分享???????

原文鏈接

java容器類的繼承結構