1. 程式人生 > >java學習之集合家族2

java學習之集合家族2

技術分享 nat pub 修改 指定元素 post linked 特點 empty

集合體系

一.數據結構

  1. List集合儲存數據結構

    <1>堆棧結構

      特點:先進後出

      技術分享圖片

    <2>隊列結構

      特點:先進先出

    <3>數組結構

      特點:查詢快,增刪慢

      技術分享圖片

    <4>鏈表結構

      特點:增刪快,查詢慢

      技術分享圖片

二.List接口

  Java.util.List 接口(集合)extends Collection 接口

  List接口的特點:

    允許存儲重復元素

    是一個有序集合(存儲元素的順序和取出元素的順序一致)存

123 取出123

    有索引,包含一些帶索引的特有方法(有三種遍歷方式:叠代器,增強for,普通 for

  帶索引的特有方法:

  1. add(int index, E e);在指定索引上添加元素
  2. E remove(int index); 移除並返回指定索引處的元素
  3. E set(index int , E e);修改並返回指定索引上的元素
  4. E get(int index); 返回列表中指定位置的元素;

  註意:

  操作索引方法時,一定要避免索引越界異常

    IndexOutOfBoundException:索引越界異常,集合會報

      StringIndexOutOfBoundException:字符串索引越界異常

      ArrayIndexOutOfBoundException:數組索引越界異常

三.ArrayList<E>集合

  特點:

  底層是一個數組結構,查詢快,增刪慢;

  有序集合

  允許存儲重復數據

四.Vector集合

  Jdk1.0出現,單線程,線程安全集合

五.LinkedList<E> 集合

  Java.util.LinkedList<E> 集合implements List<E>

  特點:

    底層是一個雙向鏈表結構,查詢慢,增刪快;

    存取是有序的

    允許重復元素

  LinkedList特有的方法:

    增加的方法:

    1.   void addFirst(E e) 將指定元素插入到此列表的開頭
    2.   void push(E e) 將元素插入此列表的開頭。此方法等效於addFirst(E e)
    1.   void addList(E e) 將指定元素添加到列表的結尾,相當於add(E e);

    刪除的方法:

    1.   E removeFirst();移除並返回此列表的第一個元素
    2.   E removeLast();移除返回列表的最後一個元素;
    3.   E pop()移除並返回此列表的第一個元素,此方法等效於removeFrist()

    獲取的方法:

    1.   E getLast(); 獲取最後一個元素
    2.   E getFrist(); 獲取第一個元素
    3.   Boolean isEmpty();判斷列表是否為空

六.Set集合

  Java.util.Set接口(集合) extends Collection 接口

  Set接口的特點:

    1.   不允許有重復的元素
    2.   沒有索引,不能用普通for遍歷

七.HashSet<E>

  Java.util.HashSet<E> 集合implements Set接口

    HashSet<E> 接口的特點

    1.   底層原理是一個哈希表(數組+單向列表),查詢快,增刪快
    2.   無序集合,存儲的順序有可能跟取出的順序不一致

  使用HashSet<E> 存儲元素唯一的原理:重寫hashCode()方法和equals()方法;

    使用HashSet add方法存儲元素的時候,會自動調用hashCode();方法,然後對集合中的元素的哈希值進行比較,如果沒有相同的哈希值,則會存入。如果哈希值有相同的,則會調用equals()方法,判斷相等,如果相等不存入, 不相等存入

八.LinkedHashSet<E>

  Java.util.LinkedHashSet 集合 extends HashSet集合

  LinkedHashSet<E>特點:

    1.   底層原理:哈希表(數組+單向鏈表)+雙向鏈表。
    2.   雙向鏈表可以保證元素存取有序。但元素要求不能重復

九.哈希值

  就是一個十進制的整數,有操作系統隨機給出

  可以使用Object類中的方法hashCode獲取哈希值

  int hashCode()返回該對象的哈希碼值;

  源碼:

    Public native int hashCode();

    native:指調用了本地操作系統的方法實現

十.ArrayList<E> 集合儲存不重復元素的的方法:

  1. boolean contains(Object o); 方法判斷是否包含指定元素
  2. ArrayList的元素遍歷添加到Set 集合中
  3. 使用HashSet集合的構造方法;HashSet(Collection <? extends E> c)

java學習之集合家族2