国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Collection集合總結(jié)

2019-11-14 22:18:15
字體:
供稿:網(wǎng)友
Collection集合總結(jié)

一、集合的概述

  1、集合的由來

  java是面向?qū)ο蟮恼Z言,而面向?qū)ο笳Z言對事物的描述是通過對象體現(xiàn)的,為了方便對多個對象進行操作,我們就必須把這多個對象進行存儲。而我們要想存儲多個對象,就不能是一個基本的變量,而應(yīng)該是一個容器類型的變量,而在我們Java的基礎(chǔ)知識里,我們有哪些容器類型的呢?答案是數(shù)組和StringBuffer兩種,但是呢?StringBuffer的結(jié)果是一個字符串,不一定滿足我們的要求,所以我們只能選擇數(shù)組,這就是對象數(shù)組。而對象數(shù)組又不能適應(yīng)變化的需求,因為數(shù)組的長度是固定的。這個時候,為了適應(yīng)變化的需求,Java就提供了集合類供我們使用。

  2、集合和數(shù)組的區(qū)別

  既然提到了數(shù)組和集合,那么我們就說一下集合和數(shù)組的區(qū)別:

  A:長度區(qū)別

    數(shù)組的長度固定

    集合的長度可變

  B:內(nèi)容不同

    數(shù)組存儲的是同一種類型的元素

    集合可以存儲不同類型的元素

  C:存儲元素的數(shù)據(jù)類型不同

    數(shù)組可以存儲基本數(shù)據(jù)類型,也可以存儲引用數(shù)據(jù)類型

    集合只能存儲引用數(shù)據(jù)類型

二、Collection集合的框架體系

  1、Collection集合體系

    Collection集合是單列集合的頂層接口。Collection表示一組對象,這些對象也稱為Collection的元素。該集合的數(shù)據(jù)結(jié)構(gòu)(簡單記就是數(shù)據(jù)的存儲方式)對集合元素有效。

    Collectoin集合的功能概述:

      1)添加功能

          boolean add(Object obj):添加功能

          boolean addAll(Collection c):添加一個集合的元素

      2)刪除功能

          void clear():移除所有元素

          boolean remove(Object obj):移除一個元素

          boolean removeAll(Collection c):移除一個集合的元素(只要有一個元素移除了就返回true)

      3)判斷功能

          boolean contains(Object obj):判斷集合中是否包含指定的元素

          boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(只有包含指定集合中所有的元素才叫包含)

          boolean isEmpty():判斷集合是否為空(指集合的數(shù)據(jù)元素為空)

      4)獲取功能

          Iterator iterator():迭代器,集合專有的遍歷方式

      5)長度功能

          int size():元素的個數(shù)

      6)交集功能

          boolean retainAll(Collection c):兩個集合中都有的元素(假設(shè)有兩個集合A、B,A對B做交集,最終的結(jié)果保存在集合A中,集合B不變,返回值表示的是集合A是否發(fā)生過改變)

      7)把集合轉(zhuǎn)換為數(shù)組

          Object[] toArray():把集合轉(zhuǎn)成數(shù)組,可以實現(xiàn)集合的遍歷

  Collection集合有兩個子接口List和Set。

  2、List集合

    List集合的特點:有序(指存儲和取出元素的順序一致)、存儲元素可重復(fù)

    List集合的特有功能:

      1)添加功能

        void add(int index,Object element):在指定位置添加元素

      2)獲取功能

        Object get(int index):獲取指定位置的元素

      3)列表迭代器

        ListIterator listIterator():迭代所有的元素

        ListIteraror listIterator(int index):從指定位置開始迭代元素

      4)刪除功能

        Object remove(int index):根據(jù)索引刪除元素,返回被刪除的元素

      5)修改功能

        Object set(int index,Object element):根據(jù)索引修改元素,返回被修改的元素

   List集合有ArrayList、Vector和LinkedList三個常用子類。

  3、List集合的子類

   List集合的子類特點:

      ArrayList的底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程不安全,效率高

      Vector的底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢,線程安全,效率低

      LinkedList的底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。線程不安全,效率高

    Vector的特有功能:

      1)添加功能

        public void addElement(Object obj)

      2)獲取功能

        public Object elementAt(int index)

        public Enumeration elements()

    LinkedList的特有功能:

      1)添加功能

        public void addFirst(Object obj)

        public void addLast(Object obj)

      2)獲取功能

        public Object getFirst()

        public Object getLast()

      3)刪除功能

        public Object removeFirst()

        public Object removeLast()

  4、Set集合

    Set集合的特點:無序(指元素的存儲和取出順序不一致)、存儲元素唯一

    Set集合有HashSet和TreeSet兩個常用子類。

  5、Set集合的子類

    1)HashSet類的特點:

      HashSet類不保證Set的迭代順序,特別是它不保證該順序恒久不變。

      注意:雖然Set集合的元素是無序的,但是作為集合來說,它肯定有它自己的元素存儲順序。而如果你的順序恰好和它的存儲順序一致,這代表不了有序,你可以多存儲一些數(shù)據(jù),看效果。

    HashSet類的底層數(shù)據(jù)結(jié)構(gòu)是哈希表。而哈希表保證元素的唯一性依賴于兩個方法:int hashCode()和boolean equals(Object obj)

    用HashSet存儲元素的執(zhí)行順序:

      首先比較hashCode()值是否相同

        是:繼續(xù)執(zhí)行equals(),看其返回值

            是true:說明元素重復(fù),不添加

            是false:就直接添加到集合

        否:就直接添加到集合

    HashSet類有一個子類LinkedHashSet,LinkedHashSet存儲元素的特點是有序、唯一

      LinkedHashSet的底層數(shù)據(jù)結(jié)構(gòu)由鏈表和哈希表組成,由鏈表保證元素有序,由哈希表保證元素唯一。

    

    2)TreeSet類的特點

      TreeSet類底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(是一種自平衡的二叉樹)。

      TreeSet類如何保證元素唯一性呢?

        根據(jù)比較的返回值是否是0來決定

      TreeSet類如何保證元素的排序呢?

        a:自然排序(元素具備比較性)

          讓元素所屬的類實現(xiàn)Comparable接口

        b:比較器排序(集合具備比較性)

          讓集合接收一個Comparator的實現(xiàn)類對象

  

     

  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平利县| 老河口市| 汽车| 九寨沟县| 罗山县| 乾安县| 左云县| 仪陇县| 馆陶县| 永丰县| 桃江县| 凌源市| 沈阳市| 阜新市| 青海省| 会同县| 屏东市| 武鸣县| 彰武县| 合阳县| 内乡县| 辉南县| 上犹县| 双牌县| 宜宾县| 科技| 布尔津县| 安义县| 鲁山县| 霍城县| 陕西省| 乌审旗| 格尔木市| 资兴市| 馆陶县| 太和县| 罗平县| 哈巴河县| 华阴市| 江安县| 仙游县|