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

Java 集合 Collection介紹及常用方式

 更新時間:2025年05月09日 12:07:02   作者:舉一個梨子zz  
Collection是單列集合的祖宗接口,它的功能是全部單列集合都可以繼承使用的,這篇文章主要介紹了Java 集合 Collection的常用方式,需要的朋友可以參考下

單列集合體系結(jié)構(gòu)

注意:

List系列集合添加的元素是有序(存取數(shù)據(jù)的順序相同),可重復(fù),有索引的

Set系列集合 添加的元素是無序,不能重復(fù),無索引的

Collection介紹

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

常用方法

方法名稱說明
public boolean add(E e)把給定的對象添加到當(dāng)前集合中
public void clear()清空集合中所有的元素
public boolean remove(E e)把給定的對象在當(dāng)前集合中刪除
public boolean contains(0bject obj)判斷當(dāng)前集合中是否包含給定的對象
public boolean isEmpty()判斷當(dāng)前集合是否為空
public int size()返回集合中元素的個數(shù)/集合的長度

代碼演示:

import java.util.ArrayList;
import java.util.Collection;
public class Test1 {
    public static void main(String[] args) {
        //Collection是一個接口,我們不能直接創(chuàng)建他的對象。
        //所以,現(xiàn)在我們學(xué)習(xí)他的方法時,只能創(chuàng)建他實現(xiàn)類的對象。
        //實現(xiàn)類:ArrayList
        Collection<String> coll = new ArrayList<>();
        //把給定的對象添加到當(dāng)前集合中
        coll.add("aaa");
        coll.add("bbb");
        System.out.println(coll);//[aaa, bbb]
        //把給定的對象在當(dāng)前集合中刪除
        coll.remove("aaa");
        System.out.println(coll);//[bbb]
        //返回集合中元素的個數(shù)/集合的長度
        System.out.println(coll.size());//1
        //判斷當(dāng)前集合是否為空
        System.out.println(coll.isEmpty());//false
        //清空集合中所有的元素
        coll.clear();
        System.out.println(coll);//[]
        System.out.println(coll.isEmpty());//true
        //判斷當(dāng)前集合中是否包含給定的對象
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        System.out.println(coll);//[aaa, bbb, ccc]
        System.out.println(coll.contains("bbb"));//true
        System.out.println(coll.contains("ddd"));//false
    }
}

注意:

contains方法在底層依賴equals方法判斷對象是否一致
如果存的是自定義對象,沒有重寫equals方法,那么默認(rèn)使用Object類中的equals方法進(jìn)行判斷,而object類中equals方法判斷的是地址值是否相同,要想判斷自定義對象中的內(nèi)容是否相同,需要在自定義的Javabean類中,重寫equals方法
舉例:如果同姓名和同年齡,就認(rèn)為是同一個學(xué)生。

代碼實現(xiàn):

測試類:

import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        //舉例:如果同姓名和同年齡,就認(rèn)為是同一個學(xué)生。
        Collection<Student> coll = new ArrayList<>();
        Student s1 = new Student("zhangsan", 23);
        coll.add(s1);
        Student s2 = new Student("zhangsan", 23);
        Student s3 = new Student("lisi", 24);
        /* //重寫equals方法前比較的是自定義對象的地址值
        //s2和s3是新new出來的,與s1的地址都不同,所以都是false
        System.out.println(coll.contains(s2));//false
        System.out.println(coll.contains(s3));//false*/
        //重寫equals方法后,比較的是自定義對象內(nèi)的屬性值
        System.out.println(coll.contains(s2));//true
        System.out.println(coll.contains(s3));//false
    }
}

自定義對象的Javabean類: 

import java.util.Objects;
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    //重寫equals方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
}

Collection的遍歷方式

迭代器遍歷

說明

迭代器在Java中的類是Iterator,迭代器是集合專用的遍歷方式,不依賴索引進(jìn)行遍歷。

Collection集合獲取迭代器 

方法名稱說明
Iterator<E> iterator ()

返回迭代器對象

默認(rèn)指向當(dāng)前集合的0索引

Iterator中的常用方法

方法名稱說明
boolean hasNext()

判斷當(dāng)前位置是否有元素,

有元素返回true,沒有元素返回false

E next ()獲取當(dāng)前位置的元素
并將迭代器對象移向下一個位置。
void remove ()刪除獲取到的元素

代碼演示

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test2 {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        Iterator<String> it = coll.iterator();
        while (it.hasNext()) {
            String str = it.next();
            System.out.println(str);
        }
        //aaa
        //bbb
        //ccc
    }
}

細(xì)節(jié)注意點

1,迭代器遍歷完畢,指針不會復(fù)位,重新遍歷該集合時需要重新獲取該集合的迭代器對象
2,循環(huán)中只能用一次next方法,否則前一個next方法將迭代器對象移向下一個位置時該位置沒有元素,后一個next方法獲取不到元素就會報錯(NoSuchElementException)
3,迭代器遍歷時,不能用集合的方法進(jìn)行增加或者刪除,可以用迭代器的方法進(jìn)行刪除

增強for遍歷

說明

增強for的底層就是迭代器,為了簡化迭代器的代碼書寫的。
它是JDK5之后出現(xiàn)的,其內(nèi)部原理就是一個Iterator迭代器
所有的單列集合和數(shù)組都能用增強for進(jìn)行遍歷。

格式

for (元素的數(shù)據(jù)類型 變量名 :數(shù)組或者集合){

        具體代碼;

}

代碼演示

import java.util.ArrayList;
import java.util.Collection;
public class Test3 {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        for (String s : coll) {
            System.out.println(s);
        }
        //aaa
        //bbb
        //ccc
    }
}

細(xì)節(jié)注意點 

上述代碼中的s是一個第三方變量,依次代表集合中的每一個數(shù)據(jù)

對s進(jìn)行操作不會影響集合中的數(shù)據(jù)

Lambda表達(dá)式遍歷

說明

得益于JDK 8開始的新技術(shù)Lambda表達(dá)式,提供了一種更簡單、更直接的遍歷集合的方式。

方法

方法名稱說明
default void forEach(Consumer<? super T> action):結(jié)合lambda遍歷集合 

代碼演示 

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
public class Test4 {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        //匿名內(nèi)部類
        coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        //lambda表達(dá)式
        coll.forEach(s -> System.out.println(s));
        //aaa
        //bbb
        //ccc
    }
}

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

相關(guān)文章

  • Java?Redisson多策略注解限流

    Java?Redisson多策略注解限流

    這篇文章主要介紹了Java?Redisson多策略注解限流,文章使用Redisson的RRateLimiter進(jìn)行限流,詳細(xì)介紹,感興趣的小伙伴可以參考下面文章內(nèi)容
    2022-09-09
  • Java方法參數(shù)是引用調(diào)用還是值調(diào)用?

    Java方法參數(shù)是引用調(diào)用還是值調(diào)用?

    Java方法參數(shù)是引用調(diào)用還是值調(diào)用?這是一個值得思考的問題。閱讀本文,找出答案
    2016-02-02
  • Java中Arrays.asList()需要注意的坑

    Java中Arrays.asList()需要注意的坑

    在Java中,我們經(jīng)常需要將數(shù)組轉(zhuǎn)換為List來方便地進(jìn)行操作,Arrays.asList()方法是一種常見的方式,本文主要介紹了Java中Arrays.asList()需要注意的坑,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Java?SimpleDateFormat與System類使用示例詳解

    Java?SimpleDateFormat與System類使用示例詳解

    這篇文章主要介紹了Java?SimpleDateFormat與System類使用示例,對于SimpleDateFormat類,是一個用來區(qū)分區(qū)域設(shè)置的方式進(jìn)行日期的是指,以及對日期進(jìn)行處理分析的一個實現(xiàn)類
    2022-11-11
  • SpringBoot中的統(tǒng)一異常處理詳細(xì)解析

    SpringBoot中的統(tǒng)一異常處理詳細(xì)解析

    這篇文章主要介紹了SpringBoot中的統(tǒng)一異常處理詳細(xì)解析,該注解可以把異常處理器應(yīng)用到所有控制器,而不是單個控制器,借助該注解,我們可以實現(xiàn):在獨立的某個地方,比如單獨一個類,定義一套對各種異常的處理機制,需要的朋友可以參考下
    2024-01-01
  • SpringBoot整合Mybatis-Plus、Jwt實現(xiàn)登錄token設(shè)置

    SpringBoot整合Mybatis-Plus、Jwt實現(xiàn)登錄token設(shè)置

    Spring Boot整合Mybatis-plus實現(xiàn)登錄常常需要使用JWT來生成用戶的token并設(shè)置用戶權(quán)限的攔截器,本文就來詳細(xì)的介紹一下,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 深入理解java中for和foreach循環(huán)

    深入理解java中for和foreach循環(huán)

    下面小編就為大家?guī)硪黄钊肜斫鈐ava中for和foreach循環(huán)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Spring實現(xiàn)文件上傳的配置詳解

    Spring實現(xiàn)文件上傳的配置詳解

    這篇文章將為大家詳細(xì)說明一下spring上傳文件如何配置,以及從request請求中解析到文件流的原理,文中示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • SpringBoot環(huán)境搭建及第一個程序運行(小白教程)

    SpringBoot環(huán)境搭建及第一個程序運行(小白教程)

    這篇文章主要介紹了SpringBoot環(huán)境搭建及第一個程序運行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • mybatis主從表關(guān)聯(lián)查詢,返回對象帶有集合屬性解析

    mybatis主從表關(guān)聯(lián)查詢,返回對象帶有集合屬性解析

    這篇文章主要介紹了mybatis主從表關(guān)聯(lián)查詢,返回對象帶有集合屬性解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

南通市| 浦县| 黔西县| 辽中县| 澳门| 元氏县| 恩施市| 万年县| 白山市| 来安县| 平凉市| 页游| 辽宁省| 海丰县| 宁陕县| 肃宁县| 灌南县| 利川市| 忻城县| 麻江县| 清涧县| 永顺县| 长泰县| 门头沟区| 内黄县| 公主岭市| 濮阳市| 阳高县| 武冈市| 郑州市| 泰安市| 武川县| 获嘉县| 台东市| 长宁区| 彰化市| 田阳县| 克山县| 桂平市| 富源县| 札达县|