java中容器的學習與理解


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

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

java容器的組成

  一、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() 把容器中的所有對象轉換到對應的數組中

 

    1、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:是一個可以動態增長的數組,其數據結構采用的是線性表,此種結構的優勢是訪問和查詢十分方便,但添加和刪除的時候效率很低。(底層是數組)

    2、Set:Set接口沒有提供額外的方法,但實現了Set接口的容器類中的元素是沒有順序,並且不可以重復的。Set容器類似於數學中集合的概念。

       (1).HashSet:Set類不允許其中存在重復的元素(集),無法添加一個重復的元素。HashSet利用Hash函數進行了查詢效率上的優化,其中contain()方法經常被調用,以用於判斷相關元素是否被添加過。

       (2).TreeSet:底層使用的是紅黑樹。

    3、Queue(隊列):是一個滿足“先進先出”的數據結構。

LinkedList提供了方法支持隊列操作,並實現了Queue接口,所以LinkedList是隊列的一種實現。

  二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對象為迭代器,用於實現對容器中元素的遍歷。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM