Java 基礎 33 集合的概述和Collection集合

1.1 集合的概述

??集合是一個容器,是用來存儲和獲取數據的.

1.1.1 為什么會出現集合類

  • 為什么出現集合類:
    • 我們學習的是面向對象的編程語言娃属,面向對象的編程語言對事物的描述都是通過對象體現的六荒,
  • 為了方便對多個對象進行操作,我們就必須把這多個對象進行存儲矾端,而要想存儲多個對象掏击,就不能是基本的變量了,應該是一個容器類型的變量秩铆。
  • 回顧我們學過的知識砚亭,有哪些是容器類型的呢?
    • 數組
    • StringBuilder

??首先說StringBuilder灯变,它的結果是一個字符串,不一定滿足我們的需求捅膘,所以我們只能
選擇數組了添祸,而數組的長度固定,不能適應變化的需求寻仗,在這種情況下刃泌,Java就提供了集合類供我們使用。
由此可見署尤,集合類的長度是可變的耙替。

  • 集合類的特點:長度可變。

1.1.2集合類體系結構圖

Collection.png

1.2 Collection集合

1.2.1 創(chuàng)建Collection集合對象并添加元素

??Collection:是單列集合的頂層接口曹体。

  • Collection 表示一組對象俗扇,這些對象也稱為 collection 的元素。
    • 一些 collection 允許有重復的元素箕别,而另一些則不允許铜幽。
    • 一些 collection 是有序的,而另一些則是無序的串稀。

??JDK 不提供此接口的任何直接

  • 實現:它提供更具體的子接口(如 Set 和 List)實現除抛。

??創(chuàng)建Collection集合的對象,我們采用的是多態(tài)的方式厨诸,使用的是具體的ArrayList類镶殷。

  • 因為這個類是最常用的集合類。
    • ArrayList()
    • Collection<E>:
      • <E>:是一種特殊的數據類型微酬,泛型绘趋。這里我們會使用就可以了。
    • 如何使用呢?
      • 在出現E的地方用引用數據類型替換即可颗管。
      • 舉例:Collection<String>,Collection<Student>

1.2.1.1 案例代碼

package com.itheima_01;

import java.util.ArrayList;
import java.util.Collection;
/*
* Collection:是單列集合的頂層接口陷遮。
 * Collection 表示一組對象,這些對象也稱為 collection 的元素垦江。
 * 一些 collection 允許有重復的元素帽馋,而另一些則不允許。
 * 一些 collection 是有序的比吭,而另一些則是無序的绽族。
 * JDK 不提供此接口的任何直接 實現:它提供更具體的子接口(如 Set 和 List)實現。
 * 
 * 創(chuàng)建Collection集合的對象衩藤,我們采用的是多態(tài)的方式吧慢,使用的是具體的ArrayList類。
 * 因為這個類是最常用的集合類赏表。
 * ArrayList() 
 * 
 * Collection<E>:
 *      <E>:是一種特殊的數據類型检诗,泛型匈仗。這里我們會使用就可以了。
 *      如何使用呢?
 *          在出現E的地方用引用數據類型替換即可逢慌。
 *          舉例:Collection<String>,Collection<Student>
 */
public class CollectionDemo {
    public static void main(String[] args) {
        //創(chuàng)建Collection集合對象
        //JDK7的新特性悠轩,看懂就可以
        //Collection<String> c = new ArrayList<>(); //多態(tài)的方式
        Collection<String> c = new ArrayList<String>(); //多態(tài)的方式
        
        //boolean add(E e):添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        
        //輸出集合對象
        System.out.println(c);
        //輸出了集合中的元素按照指定格式拼接的內容,說明ArrayList重寫了toString()方法
    }
}

1.2.2 Collection集合的成員方法

  • boolean add(E e):添加元素
  • boolean remove(Object o):從集合中移除元素
  • void clear():清空集合中的元素
  • boolean contains(Object o):判斷集合中是否存在指定的元素
  • boolean isEmpty():判斷集合是否為空
  • int size():集合的長度攻泼,也就是集合中元素的個數

1.2.2.1 案例代碼

package com.itheima_01;

import java.util.ArrayList;
import java.util.Collection;

/*
 * boolean add(E e):添加元素
 * boolean remove(Object o):從集合中移除元素
 * void clear():清空集合中的元素
 * boolean contains(Object o):判斷集合中是否存在指定的元素
 * boolean isEmpty():判斷集合是否為空
 * int size():集合的長度火架,也就是集合中元素的個數
 */
public class CollectionDemo2 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        Collection<String> c = new ArrayList<String>();
        
        //boolean add(E e):添加元素
        //System.out.println("add:"+c.add("hello"));
        //System.out.println("add:"+c.add("world"));
        //通過查看源碼,我們知道ArrayList集合的add方法的返回值永遠都是true
        c.add("hello");
        c.add("world");
        c.add("java");
        
        //boolean remove(Object o):從集合中移除元素
        //System.out.println("remove:"+c.remove("world"));
        //System.out.println("remove:"+c.remove("haha"));
        
        //void clear():清空集合中的元素
        //c.clear();
        
        //boolean contains(Object o):判斷集合中是否存在指定的元素
        //System.out.println("contains:"+c.contains("world"));
        //System.out.println("contains:"+c.contains("haha"));
        
        //boolean isEmpty():判斷集合是否為空
        //System.out.println("isEmpty:"+c.isEmpty());
        
        //int size():集合的長度忙菠,也就是集合中元素的個數
        System.out.println("size:"+c.size());
        
        //輸出集合對象
        System.out.println(c);
    } 
}

1.2.3 Collection集合的遍歷

  • Collection集合的遍歷
    • Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器距潘。
  • 通過集合對象調用iterator()方法得到迭代器對象。
    • Iterator:
      • E next():返回迭代的下一個元素只搁。
      • boolean hasNext():如果仍有元素可以迭代,則返回 true俭尖。

1.2.3.1 案例代碼

package com.itheima_01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * Collection集合的遍歷
 * 
 * Iterator<E> iterator():返回在此 collection 的元素上進行迭代的迭代器氢惋。
 * 通過集合對象調用iterator()方法得到迭代器對象。
 * 
 * Iterator:
 *      E next():返回迭代的下一個元素稽犁。 
 *      boolean hasNext():如果仍有元素可以迭代焰望,則返回 true。
 */
public class CollectionDemo3 {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        Collection<String> c = new ArrayList<String>();
        
        //添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        
        //Iterator<E> iterator()
        Iterator<String> it = c.iterator();//返回的是迭代器接口的實現類的對象
        //System.out.println(it.next());
        //System.out.println(it.next());
        //System.out.println(it.next());
        //NoSuchElementException:沒有這樣的元素異常
        //System.out.println(it.next());
        
        //boolean hasNext()
        while(it.hasNext()){
            //System.out.println(it.next());
            String s = it.next();
            System.out.println(s);
        }
        
    }
}

1.2.4 集合使用步驟圖解

Collection2.png

1.2.5 Collection集合的練習存儲自定義對象并遍歷

??Collection集合存儲自定義對象并遍歷

??提示:自定義一個學生類已亥,給出成員變量name和age熊赖。遍歷集合的時候,在控制臺輸出學生對象的成員變量值虑椎。

  • 集合的使用步驟:
    • 創(chuàng)建集合對象
    • 創(chuàng)建元素對象
    • 把元素添加到集合
    • 遍歷集合

1.2.5.1 案例代碼


package com.itheima_02;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * Collection集合存儲自定義對象并遍歷
 * 提示:自定義一個學生類震鹉,給出成員變量name和age。遍歷集合的時候捆姜,在控制臺輸出學生對象的成員變量值传趾。
 * 
 * 集合的使用步驟:
 *      A:創(chuàng)建集合對象
 *      B:創(chuàng)建元素對象
 *      C:把元素添加到集合
 *      D:遍歷集合
 */
public class CollectionTest {
    public static void main(String[] args) {
        //創(chuàng)建集合對象
        Collection<Student> c = new ArrayList<Student>();
        
        //創(chuàng)建元素對象
        Student s1 = new Student("林青霞",30);
        Student s2 = new Student("張曼玉",35);
        Student s3 = new Student("王祖賢",33);
        
        //把元素添加到集合
        c.add(s1);
        c.add(s2);
        c.add(s3);
        
        //遍歷集合
        Iterator<Student> it = c.iterator();
        while(it.hasNext()){
            Student s = it.next();
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泥技,隨后出現的幾起案子浆兰,更是在濱河造成了極大的恐慌,老刑警劉巖珊豹,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簸呈,死亡現場離奇詭異,居然都是意外死亡店茶,警方通過查閱死者的電腦和手機蜕便,發(fā)現死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽妒,“玉大人玩裙,你說我怎么就攤上這事兼贸。” “怎么了吃溅?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵溶诞,是天一觀的道長。 經常有香客問我决侈,道長螺垢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任赖歌,我火速辦了婚禮枉圃,結果婚禮上,老公的妹妹穿的比我還像新娘庐冯。我一直安慰自己孽亲,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布展父。 她就那樣靜靜地躺著返劲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栖茉。 梳的紋絲不亂的頭發(fā)上篮绿,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音吕漂,去河邊找鬼亲配。 笑死,一個胖子當著我的面吹牛惶凝,可吹牛的內容都是我干的吼虎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼梨睁,長吁一口氣:“原來是場噩夢啊……” “哼鲸睛!你這毒婦竟也來了?” 一聲冷哼從身側響起坡贺,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤官辈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后遍坟,有當地人在樹林里發(fā)現了一具尸體拳亿,經...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年愿伴,在試婚紗的時候發(fā)現自己被綠了肺魁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡隔节,死狀恐怖鹅经,靈堂內的尸體忽然破棺而出寂呛,到底是詐尸還是另有隱情,我是刑警寧澤瘾晃,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布贷痪,位于F島的核電站,受9級特大地震影響蹦误,放射性物質發(fā)生泄漏劫拢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一强胰、第九天 我趴在偏房一處隱蔽的房頂上張望舱沧。 院中可真熱鬧,春花似錦偶洋、人聲如沸熟吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽分俯。三九已至,卻和暖如春哆料,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吗铐。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工东亦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唬渗。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓典阵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镊逝。 傳聞我的和親對象是個殘疾皇子壮啊,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 870評論 0 1
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法撑蒜,內部類的語法歹啼,繼承相關的語法,異常的語法座菠,線程的語...
    子非魚_t_閱讀 31,597評論 18 399
  • 集合類簡介 為什么出現集合類?面向對象語言對事物的體現都是以對象的形式升略,所以為了方便對多個對象的操作微王,就要對對象進...
    阿敏其人閱讀 1,412評論 0 7
  • 我的辦公室只有我一個人每天做著自己的小事情屡限,過著“日出而作,日落而息”的生活炕倘。但只一人未免覺得太過寂寥钧大,...
    二爺的第一天閱讀 1,099評論 0 1
  • 與上一篇隔了好長時間,期間遇到期末考試激才,又是趕上新年拓型,所以落下了一段時間沒有寫。最近轉戰(zhàn)到Unity3D了瘸恼,也打算...
    深度不學習閱讀 995評論 0 1