欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 集合 Collection介紹及常用方式

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

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

注意:

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

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

Collection介紹

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

常用方法

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

代碼演示:

import java.util.ArrayList;
import java.util.Collection;
public class Test1 {
    public static void main(String[] args) {
        //Collection是一個(gè)接口,我們不能直接創(chuàng)建他的對(duì)象。
        //所以,現(xiàn)在我們學(xué)習(xí)他的方法時(shí),只能創(chuàng)建他實(shí)現(xiàn)類的對(duì)象。
        //實(shí)現(xiàn)類:ArrayList
        Collection<String> coll = new ArrayList<>();
        //把給定的對(duì)象添加到當(dāng)前集合中
        coll.add("aaa");
        coll.add("bbb");
        System.out.println(coll);//[aaa, bbb]
        //把給定的對(duì)象在當(dāng)前集合中刪除
        coll.remove("aaa");
        System.out.println(coll);//[bbb]
        //返回集合中元素的個(gè)數(shù)/集合的長(zhǎng)度
        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)前集合中是否包含給定的對(duì)象
        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方法判斷對(duì)象是否一致
如果存的是自定義對(duì)象,沒(méi)有重寫equals方法,那么默認(rèn)使用Object類中的equals方法進(jìn)行判斷,而object類中equals方法判斷的是地址值是否相同,要想判斷自定義對(duì)象中的內(nèi)容是否相同,需要在自定義的Javabean類中,重寫equals方法
舉例:如果同姓名和同年齡,就認(rèn)為是同一個(gè)學(xué)生。

代碼實(shí)現(xiàn):

測(cè)試類:

import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        //舉例:如果同姓名和同年齡,就認(rèn)為是同一個(gè)學(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方法前比較的是自定義對(duì)象的地址值
        //s2和s3是新new出來(lái)的,與s1的地址都不同,所以都是false
        System.out.println(coll.contains(s2));//false
        System.out.println(coll.contains(s3));//false*/
        //重寫equals方法后,比較的是自定義對(duì)象內(nèi)的屬性值
        System.out.println(coll.contains(s2));//true
        System.out.println(coll.contains(s3));//false
    }
}

自定義對(duì)象的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的遍歷方式

迭代器遍歷

說(shuō)明

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

Collection集合獲取迭代器 

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

返回迭代器對(duì)象

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

Iterator中的常用方法

方法名稱說(shuō)明
boolean hasNext()

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

有元素返回true,沒(méi)有元素返回false

E next ()獲取當(dāng)前位置的元素
并將迭代器對(duì)象移向下一個(gè)位置。
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é)注意點(diǎn)

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

增強(qiáng)for遍歷

說(shuō)明

增強(qiáng)for的底層就是迭代器,為了簡(jiǎn)化迭代器的代碼書寫的。
它是JDK5之后出現(xiàn)的,其內(nèi)部原理就是一個(gè)Iterator迭代器
所有的單列集合和數(shù)組都能用增強(qiáng)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é)注意點(diǎn) 

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

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

Lambda表達(dá)式遍歷

說(shuō)明

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

方法

方法名稱說(shuō)明
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論