java中容器的學習與理解

  之前一直對於java中容器的概念不理解,雖然學習過,但始終沒有認真理解過,這幾天老師提出了這樣一個問題,你怎麼理解java中的容器。瞬間就蒙了。因而各類搜資料學習了一下,下面是我學習後整理出來的的一些心得。歡迎各路大神指教java

  在書寫程序時,咱們經常須要對大量的對象引用進行管理。爲了實現有效的歸類管理,咱們經常將同類的引用放置在同一個數據容器中數組

java容器的組成

  1、Collection接口:定義了存取一組對象的方法,他的子接口Set和List分別定義了存取方法。Set中的數據對象沒有順序且不可重複List中的數據對象有順序且可重複。List又被細分爲LinkedList和ArrayList,LinkedList以鏈表的方式來存取數據ArrayList是以數組方式來存儲數據

Collection接口定義的方法
返回值 方法名(參數類型 參數) 描述
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是知足「後進先出」規則的容器。數據結構

List經常使用方法
返回值 方法名(參數類型 參數) 描述
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>>

Map經常使用方法
返回值 方法名(參數類型 參數) 描述
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對象爲迭代器,用於實現對容器中元素的遍歷。

感謝爲我提供學習資料、博客的大神們!!

相關文章
相關標籤/搜索