最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java集合Collection與List實例詳解

 更新時間:2026年05月11日 10:00:17   作者:Kiling_0704  
文章主要講解了Java Collection單列集合的基礎知識,包括Collection接口及其子接口List和Set的特點與實現(xiàn)類,常用方法以及遍歷方式,如迭代器、增強for循環(huán)、forEach方法,并通過代碼實例展示了如何遍歷存儲自定義對象的集合,感興趣的朋友一起看看吧

一、集合概述和分類

1.1 集合的分類

同學們,前面我們已經(jīng)學習過了ArrayList集合,它是一種容器,用來裝數(shù)據(jù)的,類似于數(shù)組,但集合的大小可變,開發(fā)中也非常常用。為了滿足不同的業(yè)務場景需求,除了ArrayList集合以外,Java還提供了很多種其他的集合,如下圖所示:

我想你的第一感覺是這些集合好多呀!但是,我們學習時會對這些集合進行分類學習,如下圖所示:一類是單列集合元素是一個一個的,另一類是雙列集合元素是一對一對的。

在今天的課程中,主要學習Collection單列集合。Collection是單列集合的根接口,也稱之為頂層接口,Collection接口下面又有兩個子接口List接口、Set接口,List和Set下面分別有不同的實現(xiàn)類,如下圖所示:

上圖中各種集合的特點如下圖所示:

可以自己寫代碼驗證一下,各種集合的特點

public class CollectionTest1 {
    public static void main(String[] args) {
        // 簡單確認一下Collection集合的特點
        Collection<String> list1 = new ArrayList<>(); //存取順序一致,可以重復,有索引
        list1.add("java1");
        list1.add("java2");
        list1.add("java1");
        list1.add("java2");
        System.out.println(list1); //[java1, java2, java1, java2]
?
        Collection<String> list2 = new HashSet<>(); //存取順序不一致,不重復,無索引
        list2.add("java1");
        list2.add("java2");
        list2.add("java1");
        list2.add("java2");
        list2.add("java3");
        System.out.println(list2); //[java3, java2, java1]
    }
}

總結:
1. 單列集合的代表是誰?雙列集合的代表是誰?
    Collection、Map?
2. Collection集合有哪兩大常用的集合體系,各自有啥特點?
    List系列集合:添加的元素是有序、可重復、有索引。
    Set系列集合:添加的元素是無序、不重復、無索引。

1.2 Collection集合的常用方法

接下來,我們學習一下Collection集合的一些常用方法,這些方法所有Collection實現(xiàn)類都可以使用。 這里我們以創(chuàng)建ArrayList為例,來演示

public class CollectionTest2 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        // 添加元素到集合
        c.add("java1");
        c.add("java1");
        c.add("java2");
        c.add("java2");
        c.add("java3");
        System.out.println(c); //打印: [java1, java1, java2, java2, java3]
?
        // 獲取集合的大小
        System.out.println(c.size()); //5
?
        // 判斷集合中是否包含某個元素
        System.out.println(c.contains("java1")); //true
        System.out.println(c.contains("Java1")); //false
?
        // 刪除某個元素,如果有多個重復元素只能刪除第一個
        System.out.println(c.remove("java1")); //true
        System.out.println(c); //打印: [java1,java2, java2, java3]
?
        // 清空集合的元素
        c.clear();
        System.out.println(c); //打?。篬]
?
        // 判斷集合是否為空 是空返回true 反之返回false
        System.out.println(c.isEmpty()); //true
?
        // 把集合轉換為數(shù)組
        Object[] array = c.toArray();
        System.out.println(Arrays.toString(array)); //[java1,java2, java2, java3]
?
        // 如果想把集合轉換為指定類型的數(shù)組,可以使用下面的代碼
        String[] array1 = c.toArray(new String[c.size()]);
        System.out.println(Arrays.toString(array1)); //[java1,java2, java2, java3]
?
        // 還可以把一個集合中的元素,添加到另一個集合中
        Collection<String> c1 = new ArrayList<>();
        c1.add("java1");
        c1.add("java2");
        Collection<String> c2 = new ArrayList<>();
        c2.add("java3");
        c2.add("java4");
        c1.addAll(c2); //把c2集合中的全部元素,添加到c1集合中去
        System.out.println(c1); //[java1, java2, java3, java4]
    }
}

最后,我們總結一下Collection集合的常用功能有哪些,ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet集合都可以調(diào)用下面的方法。

二、Collection遍歷方式

各位同學,接下來我們學習一下Collection集合的遍歷方式。有同學說:“集合的遍歷之前不是學過嗎?就用普通的for循環(huán)啊? “ 沒錯!之前是學過集合遍歷,但是之前學習過的遍歷方式,只能遍歷List集合,不能遍歷Set集合,因為以前的普通for循環(huán)遍歷需要索引,只有List集合有索引,而Set集合沒有索引。

所以我們需要有一種通用的遍歷方式,能夠遍歷所有集合。

2.1 迭代器遍歷集合

接下來學習的迭代器就是一種集合的通用遍歷方式。就是用來遍歷集合的專用方式(數(shù)組沒有迭代器),在Java中迭代器的代表是Iterator。

代碼寫法如下:

public class CollectionTest3 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("趙敏");
        c.add("小昭");
        c.add("素素");
        c.add("滅絕");
        System.out.println(c); // [趙敏, 小昭, 素素, 滅絕]
?
        // 第一步:先獲取迭代器對象
        // 解釋:Iterator就是迭代器對象,用于遍歷集合的工具
        Iterator<String> it = c.iterator();
?
        // 第二步:判斷當前位置是否有元素可以獲取
        // 解釋:hasNext()方法返回true,說明有元素可以獲??;反之沒有
        while(it.hasNext()){
            // 第三步:獲取當前位置的元素,然后自動指向下一個元素.
            String e = it.next();
            System.out.println(e);
        }
    }
}

迭代器代碼的原理如下:

  • 當調(diào)用iterator()方法獲取迭代器時,當前指向第一個元素
  • hasNext()方法則判斷這個位置是否有元素,如果有則返回true,進入循環(huán)
  • 調(diào)用next()方法獲取元素,并將當前元素指向下一個位置,
  • 等下次循環(huán)時,則獲取下一個元素,依此內(nèi)推

最后,我們再總結一下,使用迭代器遍歷集合用到哪些方法

2.2 增強for遍歷集合

同學們剛才我們學習了迭代器遍歷集合,但是這個代碼其實還有一種更加簡化的寫法,叫做增強for循環(huán)。

格式如下:

需要注意的是,增強for不光可以遍歷集合,還可以遍歷數(shù)組。接下來我們用代碼演示一下:

public class CollectionTest4 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("趙敏");
        c.add("小昭");
        c.add("素素");
        c.add("滅絕");
        System.out.println(c); // [趙敏, 小昭, 素素, 滅絕]
?
        // 1.使用增強for遍歷集合
        for(String s: c){
            System.out.println(s);
        }
?
        System.out.println("----------------------");
?
        // 2.再嘗試使用增強for遍歷數(shù)組
        String[] arr = {"迪麗熱巴", "古力娜扎", "稀奇哈哈"};
        for(String name: arr){
            System.out.println(name);
        }
    }
}

2.3 forEach遍歷集合

在JDK8版本以后還提供了一個forEach方法也可以遍歷集合,如果下圖所示:

我們發(fā)現(xiàn)forEach方法的參數(shù)是一個Consumer接口,而Consumer是一個函數(shù)式接口,所以可以傳遞Lambda表達式

public class CollectionTest5 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("趙敏");
        c.add("小昭");
        c.add("素素");
        c.add("滅絕");
        System.out.println(c); // [趙敏, 小昭, 素素, 滅絕]
        // 調(diào)用forEach方法
        // 由于參數(shù)是一個Consumer接口,所以可以傳遞匿名內(nèi)部類
        c.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        System.out.println("---------------------");
?
        // 也可以使用lambda表達式對匿名內(nèi)部類進行簡化
        c.forEach(s -> System.out.println(s)); // [趙敏, 小昭, 素素, 滅絕]
    }
}

2.4 遍歷集合案例

接下來,我們看一個案例,在集合中存儲自定義的對象,并遍歷。具體要求如下

首先,我們得寫一個電影類,用來描述每一步電影應該有哪些信息。

public class Movie{
    private String name; // 電影名稱
    private double score; // 評分
    private String actor; // 演員
    // 無參數(shù)構造方法
    public Movie(){}
    // 全參數(shù)構造方法
    public Movie(String name, double score, String actor){
        this.name=name;
        this.score=score;
        this.actor=actor;
    }
    //...get、set、toString()方法自己補上..
}

接著,再創(chuàng)建一個測試類,完成上面的需求

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<Movie> movies = new ArrayList<>();
        movies.add(new Movie("《肖申克的救贖》", 9.7, "羅賓斯"));
        movies.add(new Movie("《霸王別姬》", 9.6, "張國榮、張豐毅"));
        movies.add(new Movie("《阿甘正傳》", 9.5, "湯姆漢克斯"));
        for(Movie movie : movies){
            System.out.println("電影名:" + movie.getName());
            System.out.println("評分:" + movie.getScore());
            System.out.println("主演:" + movie.getActor());
            System.out.println("--------------------");
        }
    }
}

以上代碼的內(nèi)存原理如下圖所示:當往集合中存對象時,實際上存儲的是對象的地址值

總結:
1、如何獲取集合的迭代器對象? 
    Iterator<E> iterator():獲取集合對應的迭代器,用來遍歷集合中的元素的。
2、增強for可以遍歷哪些容器?
    既可以遍歷集合也可以遍歷數(shù)組
3、增強for的關鍵是記住它的遍歷格式,它的具體格式是什么樣的?
    for(元素的數(shù)據(jù)類型 變量名 : 數(shù)組或者集合){
        // 在此處使用變量即可, 該變量就是元素
    }
4、集合中存儲的是元素的什么信息?
    集合中存儲的是元素對象的地址

到此這篇關于Java集合Collection與List實例詳解的文章就介紹到這了,更多相關Java集合Collection與List內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解使用Spring Cloud Consul實現(xiàn)服務的注冊和發(fā)現(xiàn)

    詳解使用Spring Cloud Consul實現(xiàn)服務的注冊和發(fā)現(xiàn)

    這篇文章主要介紹了詳解使用Spring Cloud Consul實現(xiàn)服務的注冊和發(fā)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 將Java項目打包為可執(zhí)行JAR文件的完整流程

    將Java項目打包為可執(zhí)行JAR文件的完整流程

    在Java開發(fā)中,我們通常會將我們的項目打包成可執(zhí)行的Jar包,以便于在其他環(huán)境中部署和運行,本文將介紹如何使用IDEA集成開發(fā)環(huán)境將Java項目打包成可執(zhí)行的Jar包,需要的朋友可以參考下
    2025-08-08
  • SpringCloud Feign遠程調(diào)用實現(xiàn)詳解

    SpringCloud Feign遠程調(diào)用實現(xiàn)詳解

    Feign是Netflix公司開發(fā)的一個聲明式的REST調(diào)用客戶端; Ribbon負載均衡、 Hystrⅸ服務熔斷是我們Spring Cloud中進行微服務開發(fā)非常基礎的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似
    2022-11-11
  • java利用udp實現(xiàn)發(fā)送數(shù)據(jù)

    java利用udp實現(xiàn)發(fā)送數(shù)據(jù)

    這篇文章主要為大家詳細介紹了java利用udp實現(xiàn)發(fā)送數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 一文詳解Mybatis-plus的介紹與使用

    一文詳解Mybatis-plus的介紹與使用

    Mybatis-Plus?是?MyBatis?的一個增強工具,專門針對于傳統(tǒng)MyBatis開發(fā)中sql需要手動進行映射配置繁瑣缺點的一款框架技術。本文將為大家詳細講講Mybatis-plus的介紹與使用,感興趣的可以了解一下
    2022-07-07
  • Java TCP網(wǎng)絡通信協(xié)議詳細講解

    Java TCP網(wǎng)絡通信協(xié)議詳細講解

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission?Control?Protocol,它是位于網(wǎng)絡OSI模型中的第四層
    2022-09-09
  • Java如何獲取數(shù)組和字符串的長度(length還是length())

    Java如何獲取數(shù)組和字符串的長度(length還是length())

    這篇文章主要介紹了Java如何獲取數(shù)組和字符串的長度(length還是length()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Java8函數(shù)式接口的基礎學習教程

    Java8函數(shù)式接口的基礎學習教程

    這篇文章主要給大家介紹了關于Java8函數(shù)式接口基礎學習的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Spring中的InitializingBean接口的使用

    Spring中的InitializingBean接口的使用

    這篇文章主要介紹了Spring中的InitializingBean接口的使用,需要的朋友可以參考下
    2018-04-04
  • Spring配置擴展之JavaConfig的使用小結

    Spring配置擴展之JavaConfig的使用小結

    JavaConfig 是 Spring 框架中基于純 Java 代碼的配置方式,用于替代傳統(tǒng)的 XML 配置,通過注解(如@Bean)定義 Spring 容器的組件和依賴關系,使配置更加類型安全且易于維護,感興趣的可以了解一下
    2025-12-12

最新評論

湘阴县| 厦门市| 登封市| 西城区| 彰化市| 定安县| 咸丰县| 莎车县| 安平县| 南昌市| 英德市| 博湖县| 黄平县| 虞城县| 丹棱县| 永清县| 定州市| 清徐县| 苍南县| 溧水县| 咸丰县| 广灵县| 手游| 黎城县| 石渠县| 望谟县| 玉屏| 嘉禾县| 墨江| 麦盖提县| 都江堰市| 临西县| 塔河县| 铜陵市| 乐陵市| 乐至县| 济宁市| 肥东县| 调兵山市| 敖汉旗| 浙江省|