程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中的collection聚集類型總結

Java中的collection聚集類型總結

編輯:關於JAVA

Java中的collection聚集類型總結。本站提示廣大學習愛好者:(Java中的collection聚集類型總結)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中的collection聚集類型總結正文


Java聚集是java供給的對象包,包括了經常使用的數據構造:聚集、鏈表、隊列、棧、數組、映照等。Java聚集對象包地位是java.util.*
Java聚集重要可以劃分為4個部門:List列表、Set聚集、Map映照、對象類(Iterator迭代器、Enumeration列舉類、Arrays和Collections)。
Java聚集對象包框架以下圖。

解釋:看下面的框架圖,先捉住它的骨干,即Collection和Map。
Collection是一個接口,是高度籠統出來的聚集,它包括了聚集的根本操作和屬性。
Collection包括了List和Set兩年夜分支。
(01) List是一個有序的隊列,每個元素都有它的索引。第一個元素的索引值是0。
List的完成類有LinkedList, ArrayList, Vector, Stack。
(02) Set是一個不許可有反復元素的聚集。
Set的完成類有HastSet和TreeSet。HashSet依附於HashMap,它現實上是經由過程HashMap完成的;TreeSet依附於TreeMap,它現實上是經由過程TreeMap完成的。
Map是一個映照接口,即key-value鍵值對。Map中的每個元素包括“一個key”和“key對應的value”。
AbstractMap是個籠統類,它完成了Map接口中的年夜部門API。而HashMap,TreeMap,WeakHashMap都是繼續於AbstractMap。
Hashtable固然繼續於Dictionary,但它完成了Map接口。
接上去,再看Iterator。它是遍歷聚集的對象,即我們平日經由過程Iterator迭代器來遍歷聚集。我們說Collection依附於Iterator,是由於Collection的完成類都要完成iterator()函數,前往一個Iterator對象。
ListIterator是專門為遍歷List而存在的。
再看Enumeration,它是JDK 1.0引入的籠統類。感化和Iterator一樣,也是遍歷聚集;然則Enumeration的功效要比Iterator少。在下面的框圖中,Enumeration只能在Hashtable, Vector, Stack中應用。
最初,看Arrays和Collections。它們是操作數組、聚集的兩個對象類。
有了下面的全體框架以後,我們接上去對每一個類分離停止剖析。

Collection架構
上面,我們將對Collection停止歸納綜合。上面先看看Collection的一些框架類的關系圖:

Collection是一個接口,它重要的兩個分支是:List 和 Set。
List和Set都是接口,它們繼續於Collection。List是有序的隊列,List中可以有反復的元素;而Set是數學概念中的聚集,Set中沒有反復元素!
List和Set都有它們各自的完成類。
為了便利完成,聚集中界說了AbstractCollection籠統類,它完成了Collection中的絕年夜部門函數;如許,在Collection的完成類中,我們便可以經由過程繼續AbstractCollection省去反復編碼。AbstractList和AbstractSet都繼續於AbstractCollection,詳細的List完成類繼續於AbstractList,而Set的完成類則繼續於AbstractSet。
別的,Collection中有一個iterator()函數,它的感化是前往一個Iterator接口。平日,我們經由過程Iterator迭代器來遍歷聚集。ListIterator是List接口所獨有的,在List接口中,經由過程ListIterator()前往一個ListIterator對象。
接上去,我們看看各個接口和籠統類的引見;然後,再對完成類停止具體的懂得。

1. Collection簡介
Collection的界說以下:

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

它是一個接口,是高度籠統出來的聚集,它包括了聚集的根本操作:添加、刪除、清空、遍歷(讀取)、能否為空、獲得年夜小、能否掩護某元素等等。
Collection接口的一切子類(直接子類和直接子類)都必需完成2種結構函數:不帶參數的結構函數 和 參數為Collection的結構函數。帶參數的結構函數,可以用來轉換Collection的類型。

// Collection的API
abstract boolean   add(E object)
abstract boolean   addAll(Collection<? extends E> collection)
abstract void   clear()
abstract boolean   contains(Object object)
abstract boolean   containsAll(Collection<?> collection)
abstract boolean   equals(Object object)
abstract int    hashCode()
abstract boolean   isEmpty()
abstract Iterator<E>  iterator()
abstract boolean   remove(Object object)
abstract boolean   removeAll(Collection<?> collection)
abstract boolean   retainAll(Collection<?> collection)
abstract int    size()
abstract <T> T[]   toArray(T[] array)
abstract Object[]  toArray()

2. List簡介
List的界說以下:

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

List是一個繼續於Collection的接口,即List是聚集中的一種。List是有序的隊列,List中的每個元素都有一個索引;第一個元素的索引值是0,往後的元素的索引值順次+1。和Set分歧,List中許可有反復的元素。 List的官方引見以下:
A List is a collection which maintains an ordering for its elements. Every element in the List has an index. Each element can thus be accessed by its index, with the first index being zero. Normally, Lists allow duplicate elements, as compared to Sets, where elements have to be unique.
關於API方面。既然List是繼續於Collection接口,它天然就包括了Collection中的全體函數接口;因為List是有序隊列,它也額定的有本身的API接口。重要有“添加、刪除、獲得、修正指定地位的元素”、“獲得List中的子隊列”等。

// Collection的API
abstract boolean   add(E object)
abstract boolean   addAll(Collection<? extends E> collection)
abstract void   clear()
abstract boolean   contains(Object object)
abstract boolean   containsAll(Collection<?> collection)
abstract boolean   equals(Object object)
abstract int    hashCode()
abstract boolean   isEmpty()
abstract Iterator<E>  iterator()
abstract boolean   remove(Object object)
abstract boolean   removeAll(Collection<?> collection)
abstract boolean   retainAll(Collection<?> collection)
abstract int    size()
abstract <T> T[]   toArray(T[] array)
abstract Object[]  toArray()
// 比擬與Collection,List新增的API:
abstract void    add(int location, E object)
abstract boolean    addAll(int location, Collection<? extends E> collection)
abstract E     get(int location)
abstract int     indexOf(Object object)
abstract int     lastIndexOf(Object object)
abstract ListIterator<E>  listIterator(int location)
abstract ListIterator<E>  listIterator()
abstract E     remove(int location)
abstract E     set(int location, E object)
abstract List<E>    subList(int start, int end)

3. Set簡介
Set的界說以下:

public interface Set<E> extends Collection<E> {}

Set是一個繼續於Collection的接口,即Set也是聚集中的一種。Set是沒有反復元素的聚集。
關於API方面。Set的API和Collection完整一樣。

// Set的API
abstract boolean   add(E object)
abstract boolean   addAll(Collection<? extends E> collection)
abstract void    clear()
abstract boolean   contains(Object object)
abstract boolean   containsAll(Collection<?> collection)
abstract boolean   equals(Object object)
abstract int    hashCode()
abstract boolean   isEmpty()
abstract Iterator<E>  iterator()
abstract boolean   remove(Object object)
abstract boolean   removeAll(Collection<?> collection)
abstract boolean   retainAll(Collection<?> collection)
abstract int    size()
abstract <T> T[]   toArray(T[] array)
abstract Object[]   toArray()

4. AbstractCollection
AbstractCollection的界說以下:

public abstract class AbstractCollection<E> implements Collection<E> {}

AbstractCollection是一個籠統類,它完成了Collection中除iterator()和size()以外的函數。
AbstractCollection的重要感化:它完成了Collection接口中的年夜部門函數。從而便利其它類完成Collection,好比ArrayList、LinkedList等,它們這些類想要完成Collection接口,經由過程繼續AbstractCollection就曾經完成了年夜部門的接口了。

5. AbstractList
AbstractList的界說以下:

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}

AbstractList是一個繼續於AbstractCollection,而且完成List接口的籠統類。它完成了List中除size()、get(int location)以外的函數。
AbstractList的重要感化:它完成了List接口中的年夜部門函數。從而便利其它類繼續List。
別的,和AbstractCollection比擬,AbstractList籠統類中,完成了iterator()接口。

6. AbstractSet

AbstractSet的界說以下:
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}

AbstractSet是一個繼續於AbstractCollection,而且完成Set接口的籠統類。因為Set接口和Collection接口中的API完整一樣,Set也就沒有本身零丁的API。和AbstractCollection一樣,它完成了List中除iterator()和size()以外的函數。
AbstractSet的重要感化:它完成了Set接口中的年夜部門函數。從而便利其它類完成Set接口。

7. Iterator
Iterator的界說以下:

public interface Iterator<E> {}

Iterator是一個接口,它是聚集的迭代器。聚集可以經由過程Iterator去遍歷聚集中的元素。Iterator供給的API接口,包含:能否存鄙人一個元素、獲得下一個元素、刪除以後元素。
留意:Iterator遍歷Collection時,是fail-fast機制的。即,當某一個線程A經由過程iterator去遍歷某聚集的進程中,若該聚集的內容被其他線程所轉變了;那末線程A拜訪聚集時,就會拋出ConcurrentModificationException異常,發生fail-fast事宜。關於fail-fast的具體內容,我們會在fail-fast總結前面專門停止解釋。

// Iterator的API
abstract boolean hasNext()
abstract E next()
abstract void remove()

8. ListIterator
ListIterator的界說以下:

public interface ListIterator<E> extends Iterator<E> {}

ListIterator是一個繼續於Iterator的接口,它是隊列迭代器。專門用於方便List,能供給向前/向後遍歷。比擬於Iterator,它新增了添加、能否存在上一個元素、獲得上一個元素等等API接口。

// ListIterator的API
// 繼續於Iterator的接口
abstract boolean hasNext()
abstract E next()
abstract void remove()
// 新增API接口
abstract void add(E object)
abstract boolean hasPrevious()
abstract int nextIndex()
abstract E previous()
abstract int previousIndex()
abstract void set(E object)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved