35.集合:集合概述、Collection集合體系特點、Collection常用API

集合

image.png

Collection瘤旨、List巷懈、Set均為接口,其余為實現(xiàn)類

集合概述

  • 集合與數(shù)組都是容器
  • 數(shù)組的特點
    • 數(shù)組定義完成并啟動后,類型確定,長度固定
  • 在進行增刪數(shù)據(jù)操作的時候,數(shù)組是不太合適的关划,增刪數(shù)據(jù)都需要放棄原有數(shù)組或者移位
  • 數(shù)組適合的場景
    • 當業(yè)務(wù)數(shù)據(jù)的個數(shù)是固定的,且都是同一批數(shù)據(jù)類型的時候翘瓮,可以采取定義數(shù)組存儲
  • 集合的特點
    • 集合的大小不固定贮折,啟動后可以動態(tài)變化,類型也可以選擇不固定的资盅,集合更像氣球
    • 集合非常適合做元素的增刪操作
  • 注意调榄,集合中只能存儲引用類型數(shù)據(jù),如果要存儲基本類型的數(shù)據(jù)呵扛,可以選擇使用包裝類
  • 集合適合的場景
    • 數(shù)組的個數(shù)不確定每庆,需要進行增刪元素的時候

Collection集合的體系特點

  • 集合

    • Collection(單列)

      • Collection單列集合,每個元素(數(shù)據(jù))只包含一個值
    • map(雙列)

      • Map雙列集合今穿,每個元素包含兩個值(鍵值對)
  • Cowllection(單列集合的祖宗接口)

    • List
      • ArrayList
      • LinkedList
    • Set
      • HashSet
        • LinkedHashSet
      • TreeSet
  • Collection集合的特點

    • List系列集合:添加的元素是有序的缤灵,可重復(fù)的,有索引
    • Set系列集合:添加的元素是無序蓝晒,不重復(fù)腮出,無索引
      • HashSet:無序,不重復(fù)芝薇,無索引
        • LinkedHasgSet:有序胚嘲,不重復(fù),無索引
      • TreeSet:按照大小默認升序排序洛二,不重復(fù)馋劈,無索引
  • 集合對于泛型的支持

    • 集合都是支持泛型的,可以在編譯階段約束集合只能操作某種數(shù)據(jù)類型

      Collection<String> lists = new ArrayList<String>();
      Collection<String> lists = new ArrayList<>();       //JDK1.7開始后面的泛型類型申明可以省略不寫
      

      注意:集合和泛型都只支持引用數(shù)據(jù)類型晾嘶,不支持基本數(shù)據(jù)類型妓雾,所以集合中存儲的元素都認為是對象

      必須使用基本數(shù)據(jù)類型時,可以使用基本數(shù)據(jù)類型的包裝類

  • 綜合代碼

    package com.java.collection;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashSet;
    
    /**
     * Collection集合的特點
     */
    public class CollectionDemo01 {
        public static void main(String[] args) {
            // 以ArrayList為例: 有序  可重復(fù)  有索引
            Collection list = new ArrayList();  // 子類對象給到父類接口变擒,這是一種多態(tài)的寫法
            list.add("Java");
            list.add("Java");
            list.add("MyBatis");
            list.add(123);
            list.add(123);
            list.add(false);
            list.add(false);
            System.out.println(list);   // 集合本身重寫了toString()方法
            //[Java, Java, MyBatis, 123, 123, false, false]
    
            System.out.println("-------------");
    
            // 以HashSet為例:無序  不重復(fù)  無索引
            Collection list1 = new HashSet();  // 子類對象給到父類接口君珠,這是一種多態(tài)的寫法
            list1.add("Java");
            list1.add("Java");
            list1.add("MyBatis");
            list1.add(123);
            list1.add(123);
            list1.add(false);
            list1.add(false);
            System.out.println(list1);   // 集合本身重寫了toString()方法
            // [Java, false, MyBatis, 123]
    
            System.out.println("-------------");
            // Collection<String> list2 = new ArrayList<String>();
            Collection<String> list2 = new ArrayList<String>();
            list2.add("Java");
            // list2.add(23); 不滿足String泛型約束
            list2.add("MyBatis");
    
            // Collection<int> list3 = new ArrayList(); // 需要使用對應(yīng)的基本數(shù)據(jù)類型的包裝類
            Collection<Integer> list3 = new ArrayList();
            list3.add(23);  // 此時添加的23不再是int型寝志,實際上是Integer類型的包裝類
            list3.add(32);
    
            Collection<Double> list4 = new ArrayList();
            list4.add(23.33);   // 此時添加的23.33不再是double型的基本類型數(shù)據(jù)娇斑,而是Double類型的引用類型數(shù)據(jù)
            list4.add(33.33);
        }
    }
    
    

Collection集合常用API

  • Collection是單列集合的祖宗接口策添,它的功能是全部單列集合都可以繼承使用的

  • Collection常用API如下:

    方法名稱 說明
    public boolean add(E e) 把給定的對象添加到當前集合中
    public void clear() 清空集合中所有的元素
    public boolean remove(E e) 把給定的對象在當前集合中刪除
    public boolean contains(Object, ob) 判斷當前集合中是否包含給定的對象
    public boolean inEmpty() 判斷當前集合是否為空
    public int size() 返回集合中元素的個數(shù)
    public Object[] toArray() 把集合中的元素,存儲到數(shù)組中
    public boolean addAll(int index, Collection c) 將給定集合中的所有元素添加到另一個集合中去毫缆,其中index是可選參數(shù)(前提是list家族)唯竹,代表插入的位置,c表示傳入一個集合
  • 測試代碼:

    package com.java.collection;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.HashSet;
    
    /**
     * Collection常用API
     */
    public class CollectionDemo02 {
        public static void main(String[] args) {
            // HashSet添加元素是 無序 不重復(fù) 無索引
            Collection<String> list = new HashSet<>();
    
            // 1. 添加元素苦丁,添加成功返回true
            list.add("Java");
            list.add("CSS");
            list.add("CSS");
            list.add("MySQL");
            list.add("MyBatis");
            list.add("Spring");
            System.out.println(list);
            // [Java, CSS, MySQL, MyBatis, Spring]
    
            // 2. 清空集合的元素
            list.clear();
            System.out.println(list);   // []
    
            // 3. 判斷集合是否為空浸颓,是空返回true
            System.out.println(list.isEmpty()); // true
    
            // 4. 獲取集合的大小
            list.add("Java");
            list.add("CSS");
            list.add("CSS");
            list.add("MySQL");
            list.add("MyBatis");
            list.add("Spring");
            System.out.println(list.size());   // 5
    
            // 5. 判斷集合中是否包含某個元素
            System.out.println(list.contains("Java"));   // true
            System.out.println(list.contains("Node"));   // false
    
            // 6. 刪除某個元素:如果有多個重復(fù)元素默認刪除前面的第一個
            System.out.println(list.remove("CSS"));
            System.out.println(list);  // [Java, MySQL, MyBatis, Spring]
            // 只有l(wèi)ist家族才可以使用元素索引刪除,這里只是名字為list和list家族沒有關(guān)系
    
            // 7. 把集合轉(zhuǎn)換成數(shù)組
            // 轉(zhuǎn)成Object類的數(shù)組是因為即使使用了泛型約束規(guī)定集合里面的數(shù)組都是String旺拉,但是产上,事實上也存在
            // 特殊的技術(shù),使得即使有泛型約束也可以插入其他數(shù)據(jù)類型的元素
            // 因此為了防止這種情況蛾狗,統(tǒng)一轉(zhuǎn)換成Object類型晋涣,這樣就向下兼容了所有類型的數(shù)據(jù)
            Object[] arr = list.toArray();
            System.out.println("數(shù)組" + Arrays.toString(arr));
    
            // 8. 合并兩個集合的元素
            Collection<String> c1 = new ArrayList<String>();
            c1.add("Java1");
            c1.add("Java2");
            Collection<String> c2 = new ArrayList<String>();
            c2.add("Java3");
            c2.add("Java4");
    
            // addAll是將一個數(shù)組的元素拷貝到另一個數(shù)組中去,而不是剪切沉桌,即“倒入”
            c1.addAll(c2);
            System.out.println(c1);
            System.out.println(c2);
        }
    }
    
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谢鹊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子留凭,更是在濱河造成了極大的恐慌佃扼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔼夜,死亡現(xiàn)場離奇詭異兼耀,居然都是意外死亡,警方通過查閱死者的電腦和手機求冷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門翠订,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遵倦,你說我怎么就攤上這事尽超。” “怎么了梧躺?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵似谁,是天一觀的道長。 經(jīng)常有香客問我掠哥,道長巩踏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任续搀,我火速辦了婚禮塞琼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禁舷。我一直安慰自己彪杉,他們只是感情好毅往,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著派近,像睡著了一般攀唯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渴丸,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天侯嘀,我揣著相機與錄音,去河邊找鬼谱轨。 笑死戒幔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的土童。 我是一名探鬼主播溪食,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼娜扇!你這毒婦竟也來了错沃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤雀瓢,失蹤者是張志新(化名)和其女友劉穎枢析,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刃麸,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡醒叁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泊业。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片把沼。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吁伺,靈堂內(nèi)的尸體忽然破棺而出饮睬,到底是詐尸還是另有隱情,我是刑警寧澤篮奄,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布捆愁,位于F島的核電站,受9級特大地震影響窟却,放射性物質(zhì)發(fā)生泄漏昼丑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一夸赫、第九天 我趴在偏房一處隱蔽的房頂上張望菩帝。 院中可真熱鬧,春花似錦、人聲如沸呼奢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽控妻。三九已至州袒,卻和暖如春揭绑,著一層夾襖步出監(jiān)牢的瞬間弓候,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工他匪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菇存,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓邦蜜,卻偏偏與公主長得像依鸥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悼沈,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容