Java 集合相關概念

集合

一、什麼是集合? 對象類型的數組
二、定義了一個數組,數組的元素的類型引用數據類型
三、這種數組稱爲對象數組,數組每一個元素其實都是一個對象的地址,而非對象自己。
  class Person{
    String name;
    int age;
  }
  Person[] persons = new Person[5];java

四、集合的來源:數組的不足:數組

  沒法擴展:數組的長度是固定的,一旦建立,就沒法修改。
  結果:每一次進行擴展時都要把原來的數組進行復制到另外一個更大的空間。
  解決:將對象類型的數組,變成某個類型的私有成員變量。對於數組的種種操做,都封裝成公有的方法。
  集合就是數組的封裝安全

五、集合和數組的區別併發

 1.共同點:
   都是用於存儲數據的容器。能夠更加方便統一管理數據。
 2.不一樣點:
  1.存儲內容不一樣。
  數組既能夠存在基本數據類型,也能夠存儲引用數據類型。必須是相同類型的元素
  集合只能存儲引用數據類型。能夠存儲不一樣類型的元素。
 2.存儲數量不一樣:
  數組的長度是不可變的,一旦肯定大小就沒法增刪
  集合的長度是可變的,是一個可伸縮的容器
 3.方法不一樣:
  數組中只有Object定義的方法,以及一個length屬性
  集合中能夠有不少的方法。線程

六、集合的體系結構對象

七、Collectionblog

 1.Collection是一個接口,不能建立對象,找一個實現類來調用方法。
 2.使用實現類ArrayList來調用接口中的方法。
 3.經常使用方法:
  boolean add(Object obj)
  boolean remove(Object o)
  void clear()
  boolean isEmpty()
  boolean contains(Object o)
  int size()
 4.Collection中帶all方法
  addAll:把一個集合中的數據所有添加到另外一個集合中
  containsAll:判斷是否所有包含
  removeAll:刪除兩個集合的交集部分
  retainAll:保留兩個集合的交集部分
 5.集合的遍歷
  1.轉成數組,通遍歷數組的方式來間接的遍歷集合
  Object toArray():能夠把集合轉變爲數組
  2.迭代器
    爪子
  Iterator iterator()
  hasNext() :判斷是否有下一個元素
  next():獲取下一個元素索引

八、List
 1.是Collection的一個子接口
 2.特色:
  有序:每一個元素都有本身的位置,不一樣位置是有分別的。
  有索引:每一個元素都本身的編號。
  能夠存放相同元素,即便用相同的元素,位置不一樣,也能夠區分開來。
 3.特有方法
  add(int index, E element)
  remove(int index)
  set(int index, E element)
  get(int index)
 4.List集合的遍歷(第三種遍歷)
  siz() get(i)
 5.併發修改異常
  java.util.ConcurrentModificationException
  由於集合自己和迭代器都在操做集合,操做衝突。
  解決方式:要麼所有使用集合操做,要麼所有使用迭代器操做。
  ListIterator是Iterator的子接口,
  hasPrevious():判斷是否有上一個元素
  previous() :獲取上一個元素接口

九、Vector
 1.List只是一個接口,根據底層實現方式的不一樣,具備不一樣的實現類
  ArrayList:底層結構是數組,數組實現,順序存儲
  LinkedList:底層結構是鏈表,節點實現,鏈式存儲
  Vector:底層結構是數組,數組實現,順序存儲
 2.Vector
  1.jdk1.0出現,jdk1.2被ArrayList替代。
  2.特色:
    線程安全,效率較低
    順序存儲,增刪較慢
 3.特有遍歷方式
  addElement(E obj)
  removeElement(Object obj)
  Enumeration<E> elements()
  boolean hasMoreElements()
  E nextElement()內存

 

十、ArrayList

  1.是List的一個實現類
  2.沒有什麼特別的方法
  3.存儲方式  
    數組實現,順序存儲
    經過物理內存的位置關係,來表示描述邏輯順序的相鄰。

十一、LinkedList

  1.是List的一個實現類   2.存儲方式     節點實現,鏈式存儲     不經過物理內存位置的相鄰來表示邏輯順序的相鄰     每一個元素都存儲在一個節點中,節點除了元素數據自己以外,還須要存儲下一個元素的內存地址。   3.查詢速度慢須要根據前面的節點來獲取後一個節點的地址,前面全部的節點都訪問一遍,節點數量多,查詢速度較慢。   4.增刪速度極快,增刪一個元素,只須要修改新增元素先後兩個節點的引用域便可,與集合自己的元素個數無關。   5.特有方法    操做頭部和尾部的特有方法     addFirst(E e)     addLast(E e)     removeFirst()     removeLast()     getFirst()     getLast()

相關文章
相關標籤/搜索