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

Java 集合 Collection介紹及常用方式

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

單列集合體系結構

注意:

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

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

Collection介紹

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

常用方法

方法名稱說明
public boolean add(E e)把給定的對象添加到當前集合中
public void clear()清空集合中所有的元素
public boolean remove(E e)把給定的對象在當前集合中刪除
public boolean contains(0bject obj)判斷當前集合中是否包含給定的對象
public boolean isEmpty()判斷當前集合是否為空
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)在我們學習他的方法時,只能創(chuàng)建他實現(xiàn)類的對象。
        //實現(xiàn)類:ArrayList
        Collection<String> coll = new ArrayList<>();
        //把給定的對象添加到當前集合中
        coll.add("aaa");
        coll.add("bbb");
        System.out.println(coll);//[aaa, bbb]
        //把給定的對象在當前集合中刪除
        coll.remove("aaa");
        System.out.println(coll);//[bbb]
        //返回集合中元素的個數(shù)/集合的長度
        System.out.println(coll.size());//1
        //判斷當前集合是否為空
        System.out.println(coll.isEmpty());//false
        //清空集合中所有的元素
        coll.clear();
        System.out.println(coll);//[]
        System.out.println(coll.isEmpty());//true
        //判斷當前集合中是否包含給定的對象
        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方法,那么默認使用Object類中的equals方法進行判斷,而object類中equals方法判斷的是地址值是否相同,要想判斷自定義對象中的內容是否相同,需要在自定義的Javabean類中,重寫equals方法
舉例:如果同姓名和同年齡,就認為是同一個學生。

代碼實現(xiàn):

測試類:

import java.util.ArrayList;
import java.util.Collection;
public class Test {
    public static void main(String[] args) {
        //舉例:如果同姓名和同年齡,就認為是同一個學生。
        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方法后,比較的是自定義對象內的屬性值
        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,迭代器是集合專用的遍歷方式,不依賴索引進行遍歷。

Collection集合獲取迭代器 

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

返回迭代器對象

默認指向當前集合的0索引

Iterator中的常用方法

方法名稱說明
boolean hasNext()

判斷當前位置是否有元素,

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

E next ()獲取當前位置的元素
并將迭代器對象移向下一個位置。
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
    }
}

細節(jié)注意點

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

增強for遍歷

說明

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

格式

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
    }
}

細節(jié)注意點 

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

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

Lambda表達式遍歷

說明

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

方法

方法名稱說明
default void forEach(Consumer<? super T> action):結合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");
        //匿名內部類
        coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        //lambda表達式
        coll.forEach(s -> System.out.println(s));
        //aaa
        //bbb
        //ccc
    }
}

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

相關文章

最新評論