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

Java基礎(chǔ)之集合Set詳解

 更新時(shí)間:2021年05月10日 09:51:01   作者:小亮點(diǎn)科技  
這篇文章主要介紹了Java基礎(chǔ)之集合Set詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好地幫助,需要的朋友可以參考下

一、概述

Set是Java中的集合類,提供了一種無(wú)順序,不重復(fù)的集合。常用的子類包括HashSet, TreeSet等。

  • HashSet底層使用HashMap實(shí)現(xiàn),根據(jù)元素的hashCode和equals來(lái)判斷是否為重復(fù)元素。當(dāng)元素的hashCode相同且equals返回true時(shí)則認(rèn)為是重復(fù)元素。因?yàn)槭褂昧薶ash算法所以HashSet有很好的添加和訪問(wèn)性能。可以放入null但只能放一個(gè)null
  • TreeSet底層使用紅黑樹(shù)實(shí)現(xiàn),Set上的元素被放在一個(gè)自動(dòng)排序的紅黑樹(shù)中。不能放入null

二、Set的常用方法

  • add() 向Set中添加元素
  • size() 返加Set的大小,即Set中元素的數(shù)量
  • remove(Object o) 從Set上刪除元素
  • boolean contains(Object o) 檢查Set中是否包含某個(gè)元素,包含返回true,不包含返回false
  • iterator() 返回Set的迭代器
  • clear() 清空Setis
  • Empty() 檢查Set是否為空,為空返回true, 否則返回false
package collect;

import java.util.HashSet;
import java.util.Set;

/**
 * [簡(jiǎn)要描述]:Set使用
 * [詳細(xì)描述]:
 *
 * @author Smalight Lv
 * @version 1.0, 2021/5/6 15:15
 * @since JDK 1.8
 */
public class SetTest1 {
    public static void main(String[] args) {
        Set<String> set =  new HashSet<>();

        //添加元素到Set
        set.add("張三");
        set.add("李四");
        set.add("王五");

        //打印Set
        System.out.println(set);

        //再加入一個(gè)王五,不能添加成功
        boolean rst = set.add("王五");
        System.out.println("添加結(jié)果:" + rst);
        System.out.println(set);

        //HashSet可以加入null,但只能加入一個(gè)null
        rst = set.add(null);
        System.out.println("添加第一個(gè)null:" + rst);
        System.out.println(set);
        rst = set.add(null);
        System.out.println("添加第二個(gè)null:" + rst);
        System.out.println(set);

        //判斷Set中是否包含某個(gè)元素
        rst = set.contains("張三");
        System.out.println("是否包含元素\"張三\":" + rst);

        //刪除元素
        set.remove("張三");
        System.out.println(set);

        //判斷Set中是否包含某個(gè)元素
        rst = set.contains("張三");
        System.out.println("是否包含元素\"張三\":" + rst);

        //Set的大小,即Set中元素的數(shù)量
        int size = set.size();
        System.out.println("Set的大?。? + size);

        //判斷Set是否為空
        boolean isEmpty = set.isEmpty();
        System.out.println("Set是否為空:" + isEmpty);

        //清空Set
        set.clear();
        System.out.println(set);

        //判斷Set是否為空
        isEmpty = set.isEmpty();
        System.out.println("Set是否為空:" + isEmpty);

    }
}

運(yùn)行結(jié)果:

[李四, 張三, 王五]
添加結(jié)果:false
[李四, 張三, 王五]
添加第一個(gè)null:true
[null, 李四, 張三, 王五]
添加第二個(gè)null:false
[null, 李四, 張三, 王五]
是否包含元素"張三":true
[null, 李四, 王五]
是否包含元素"張三":false
Set的大?。?
Set是否為空:false
[]
Set是否為空:true

注:TreeSet不能添加null元素,添加null時(shí)會(huì)拋出NullPointerException異常

package collect;

import java.util.Set;
import java.util.TreeSet;

/**
 * [簡(jiǎn)要描述]: Set
 * [詳細(xì)描述]:
 *
 * @author Smalight Lv
 * @version 1.0, 2021/5/6 16:28
 * @since JDK 1.8
 */
public class SetTest2 {
    public static void main(String[] args) {
        Set<String> set =  new TreeSet<>();

        //TreeSet不能加入null
        boolean rst = set.add(null);
        System.out.println("添加第一個(gè)null:" + rst);
        System.out.println(set);

    }
}

運(yùn)行結(jié)果:

Exception in thread "main" java.lang.NullPointerException
 at java.util.TreeMap.compare(TreeMap.java:1294)
 at java.util.TreeMap.put(TreeMap.java:538)
 at java.util.TreeSet.add(TreeSet.java:255)
 at collect.SetTest2.main(SetTest2.java:19)

package collect;

import java.util.TreeSet;

/**
 * [簡(jiǎn)要描述]: Set
 * [詳細(xì)描述]:
 *
 * @author Smalight Lv
 * @version 1.0, 2021/5/6 16:28
 * @since JDK 1.8
 */
public class SetTest3 {
    public static void main(String[] args) {
        TreeSet<String> set =  new TreeSet<>();

        //添加元素到Set
        set.add("B");
        set.add("A");
        set.add("李四");
        set.add("王五");
        set.add("張三");
        set.add("a");


        //打印Set
        System.out.println(set);

        //再加入一個(gè)王五,不能添加成功
        boolean rst = set.add("王五");
        System.out.println("添加結(jié)果:" + rst);
        System.out.println(set);

        //獲取Set中的第一個(gè)元素
        System.out.println(set.first());
        //獲取Set中的最后一個(gè)元素
        System.out.println(set.last());

        //判斷Set中是否包含某個(gè)元素
        rst = set.contains("張三");
        System.out.println("是否包含元素\"張三\":" + rst);

        //刪除元素
        set.remove("張三");
        System.out.println(set);

        //判斷Set中是否包含某個(gè)元素
        rst = set.contains("張三");
        System.out.println("是否包含元素\"張三\":" + rst);

        //Set的大小,即Set中元素的數(shù)量
        int size = set.size();
        System.out.println("Set的大?。? + size);

        //判斷Set是否為空
        boolean isEmpty = set.isEmpty();
        System.out.println("Set是否為空:" + isEmpty);

        //清空Set
        set.clear();
        System.out.println(set);

        //判斷Set是否為空
        isEmpty = set.isEmpty();
        System.out.println("Set是否為空:" + isEmpty);


    }
}

運(yùn)行結(jié)果:

[A, B, a, 張三, 李四, 王五]
添加結(jié)果:false
[A, B, a, 張三, 李四, 王五]
A
王五
是否包含元素"張三":true
[A, B, a, 李四, 王五]
是否包含元素"張三":false
Set的大?。?
Set是否為空:false
[]
Set是否為空:true

三、Set的遍歷

3.1增強(qiáng)for循環(huán)

package collect;

import java.util.HashSet;
import java.util.Set;

/**
 * [簡(jiǎn)要描述]:增強(qiáng)for循環(huán)遍歷Set
 * [詳細(xì)描述]:
 *
 * @author Smalight Lv
 * @version 1.0, 2021/5/6 17:01
 * @since JDK 1.8
 */
public class SetTest4 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        set.add("唐僧");
        set.add("孫悟空");
        set.add("豬悟能");
        set.add("沙悟凈");
        System.out.println(set);

        for(String item:set){
            System.out.println(item);
        }
    }
}

運(yùn)行結(jié)果:

[豬悟能, 孫悟空, 沙悟凈, 唐僧]
豬悟能
孫悟空
沙悟凈
唐僧

3.2 迭代器遍歷

package collect;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * [簡(jiǎn)要描述]:增強(qiáng)for循環(huán)遍歷Set
 * [詳細(xì)描述]:
 *
 * @author Smalight Lv
 * @version 1.0, 2021/5/6 17:01
 * @since JDK 1.8
 */
public class SetTest5 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        set.add("唐僧");
        set.add("孫悟空");
        set.add("豬悟能");
        set.add("沙悟凈");
        System.out.println(set);

        Iterator<String> iterator = set.iterator();

        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

運(yùn)行結(jié)果:

[豬悟能, 孫悟空, 沙悟凈, 唐僧]
豬悟能
孫悟空
沙悟凈
唐僧

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

相關(guān)文章

  • Java 調(diào)整格式日志輸出

    Java 調(diào)整格式日志輸出

    本文主要介紹Java 的日志輸出格式,在開(kāi)發(fā)java的時(shí)候會(huì)經(jīng)??慈罩具M(jìn)行調(diào)試或者查看錯(cuò)誤,這里給大家介紹日志輸出調(diào)整格式,以便大家看日志的時(shí)候更加方便,
    2016-07-07
  • Kotlin 基礎(chǔ)教程之類、對(duì)象、接口

    Kotlin 基礎(chǔ)教程之類、對(duì)象、接口

    這篇文章主要介紹了Kotlin 基礎(chǔ)教程之類、對(duì)象、接口的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringMVC配置javaConfig及StringHttpMessageConverter示例

    SpringMVC配置javaConfig及StringHttpMessageConverter示例

    這篇文章主要介紹了SpringMVC配置javaConfig及StringHttpMessageConverter實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • SpringBoot使用注解進(jìn)行分頁(yè)的實(shí)現(xiàn)示例

    SpringBoot使用注解進(jìn)行分頁(yè)的實(shí)現(xiàn)示例

    分頁(yè)使用可以說(shuō)非常普遍了,有時(shí)候會(huì)需要非常靈活的方式去開(kāi)啟或關(guān)閉分頁(yè),嘗試使用一下注解的方式來(lái)進(jìn)行分頁(yè),本文主要介紹了SpringBoot使用注解進(jìn)行分頁(yè)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 關(guān)于mybatis mapper類注入失敗的解決方案

    關(guān)于mybatis mapper類注入失敗的解決方案

    這篇文章主要介紹了關(guān)于mybatis mapper類注入失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • MybatisPlus分頁(yè)失效不起作用的解決

    MybatisPlus分頁(yè)失效不起作用的解決

    在使用MybatisPlus的selectPage時(shí)發(fā)現(xiàn)分頁(yè)不起作用,每次返回的都是全部的數(shù)據(jù),本文就來(lái)介紹一下MybatisPlus分頁(yè)失效不起作用的解決,感興趣的可以了解一下
    2024-03-03
  • SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法(二)

    SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法(二)

    這篇文章主要介紹了SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法(二),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 解決mybatis plus 駝峰式命名規(guī)則問(wèn)題

    解決mybatis plus 駝峰式命名規(guī)則問(wèn)題

    這篇文章主要介紹了解決mybatis plus 駝峰式命名規(guī)則,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring Boot Admin郵件警報(bào)整合過(guò)程解析

    Spring Boot Admin郵件警報(bào)整合過(guò)程解析

    這篇文章主要介紹了Spring Boot Admin郵件警報(bào)整合過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java實(shí)現(xiàn)銀行ATM系統(tǒng)

    Java實(shí)現(xiàn)銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論