Collection接口詳解

一:Collection接口

集合:集合是java中提供的一種容器,能夠用來存儲多個數據
Collection即單列集合。統必定義了一套單列集合的接口
Collection接口詳解java

  • boolean add(E e)

    向集合中添加一個元素。集合更改則添加成功返回true,若是該集合不容許重複而且已經包含指定的元素。返回false。部分子類的add方法可能會限制添加到集合中的元素類型,或者不會將NULL添加到集合中。數組

  • void clear()

    清空掉集合中的全部元素安全

  • boolean contains(Object o)

    若是集合中包含指定元素那麼返回true。特別的,若是集合中也包含NULL元素的時候而且要查找的元素也是NULL的時候也返回true。數據結構

  • boolean isEmpty()

    若是集合中沒有元素返回true。ide

  • boolean remove(Object o)

    刪除集合中的指定的元素。若是存在NULL,也刪除。函數

  • int size()

    返回該集合中元素的個數。若是超過了Integer.MAX_VALUE,那麼返回Integer.MAX_VALUE。線程

  • Object[] toArray()
    這個方法是集合和數組轉化的橋樑。

    見名知意,返回包含此集合中全部元素的數組。若是這個集合的迭代器保證元素有序,那麼該方法與其迭代器中元素順序一致。而且該方法返回的數組是拷貝出來的(某些集合底層數組實現,區別這個),能夠進行任意的更改。對象

二:List 接口

List接口Api一覽

  • 重寫了Collection接口的一些列函數。
  • 繼承了add和addAll兩個函數的規則。
  • 新增了一些列函數。

List集合的特色

和Set集合最大的不一樣即:blog

  1. 有序
  2. 容許重複元素、
  3. 有索引,能夠普通的for循環遍歷

從Api列表中咱們能夠看到List接口定義了一個listIterator函數,返回一個ListIterator接口。該接口繼承自Iterator接口,並提供了更多的函數。排序

List常見實現類

  • ArrayList:
    底層數據結構是數組。線程不安全
  • LinkedList:
    底層數據結構是雙向鏈表。線程不安全
  • Vector:
    底層數據結構是數組。線程安全

Set 接口

Set接口Api一覽

  • 並無新增本身的函數
  • 重寫了Collection接口的部分函數
  • 繼承了add函數和addAll函數

    Set集合特色

    相比於List集合最大的區別:

    1. 不包含重複元素。
    2. 沒有索引

這裏咱們強調一下,有些地方說Set集合是無序的,實際上是不嚴謹的。能夠看到jdk註釋中是沒有指明這一點的,那麼List集合的註釋中的有序和有些人常說的Set集合是無序的是什麼意思呢?


首先要搞清楚、Java中有序和無序的概念:

有序指的是存儲順序與添加順序相同,而且能夠經過下標訪問,List就是這樣。

無序恰好相反,指的是存儲順序與添加順序無關,沒有下標,固然也不可能經過下標訪問,Set就是如此。

這裏須要注意的是,有序、無序中的「序」與咱們日常所說的「順序」無關。

而TreeSet是無序,但又是排好序的。即添加順序與存儲順序無關,可是其中的對象實現了排序。


Set集合經常使用子類

  • HashSet:底層數據結構是哈希表(是一個元素爲鏈表的數組)
  • TreeSet:底層數據結構是紅黑樹(是一個自平衡的二叉樹)。保證元素的排序方式
  • LinkedHashSet:底層數據結構由哈希表和鏈表組成。

數組和集合的區別

1.數組的長度是固定的,集合的長度是可變的2.數組中存儲的是一種數據類型的元素,能夠存儲基本數據類型也能夠存儲引用數據類型,集合存儲的都是對象,並且對象的數據類型能夠不同。再開發當中通常當對象較多的時候,使用集合來存儲對象

相關文章
相關標籤/搜索