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

Java中的LinkedHashSet和TreeSet解讀

 更新時(shí)間:2023年09月05日 09:35:22   作者:jtjeeeee  
這篇文章主要介紹了Java中的LinkedHashSet和TreeSet解讀,哈希表和鏈表實(shí)現(xiàn)的set接口哈希表決定了它元素是唯一的,而鏈表則保證了他是有序的(存儲(chǔ)和取出順序一致),元素按照一定規(guī)則排序,不是按儲(chǔ)存時(shí)間排的,需要的朋友可以參考下

一,LinkedHashSet

  • 哈希表和鏈表實(shí)現(xiàn)的set接口
  • 哈希表決定了它元素是唯一的,而鏈表則保證了他是有序的(存儲(chǔ)和取出順序一致)

二,TreeSet

  • 元素按照一定規(guī)則排序,不是按儲(chǔ)存時(shí)間排的
  • 具體排序方法由構(gòu)造方法決定
  • 無(wú)參構(gòu)造TreeSet()故居元素的自然排序進(jìn)行排序
  • 沒(méi)有索引無(wú)法使用普通for循環(huán)進(jìn)行遍歷
  • 也屬于set集合,沒(méi)有重復(fù)元素

三,排序

  • 自然排序Comparable通過(guò)返回正負(fù)數(shù)和0判斷,返回正數(shù)說(shuō)明前一個(gè)比將要儲(chǔ)存進(jìn)來(lái)的大,即放到前面
  • 返回的是負(fù)數(shù)說(shuō)明前一個(gè)比將要儲(chǔ)存進(jìn)來(lái)的小,就會(huì)放在后面,這樣就做到了從小到大排列
  • 返回0他會(huì)以為元素一致而不存儲(chǔ)
  • 利用以上規(guī)則,當(dāng)實(shí)現(xiàn)Comparable接口時(shí),可以重寫(xiě)compareTo()方法,一我們想要的順序輸出
  • 例如:按存儲(chǔ)時(shí)間直接return 1(正數(shù));,按時(shí)間的倒序return -1(負(fù)數(shù));

Comparator比較器

  • 當(dāng)使用帶參構(gòu)造時(shí),需要傳Comparator接口(實(shí)際傳得應(yīng)該是他的實(shí)現(xiàn)類(lèi)對(duì)象)
  • 由于匿名內(nèi)部類(lèi)就相當(dāng)于一個(gè)接口的實(shí)現(xiàn)類(lèi)所以可以用匿名內(nèi)部類(lèi)代替,否則需要寫(xiě)一個(gè)接口實(shí)現(xiàn)類(lèi),然后創(chuàng)建它的對(duì)象傳進(jìn)去
  • 最后用復(fù)雜一點(diǎn)的比較器練習(xí)一下
  • Student類(lèi),當(dāng)使用無(wú)參構(gòu)造即自然排序時(shí)需要實(shí)現(xiàn)一下Comparable接口
public class Student {
    public String name;
    public int chinese;
    public int math;
    public Student(){}
    public Student(String name,int chinese,int math){
        this.chinese=chinese;
        this.name=name;
        this.math=math;
    }
    @Override
    public String toString() {
        return "名字:"+name+" "+"語(yǔ)文:"+chinese+" "+"數(shù)學(xué):"+math+"\t";
    }
}

測(cè)試類(lèi)

import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest {
    public static void main(String[] args) {
//        TreeSet的有參構(gòu)造,可以寫(xiě)一個(gè)Comparabor的實(shí)現(xiàn)類(lèi)然后創(chuàng)建對(duì)象傳進(jìn)來(lái),也可以直接寫(xiě)一個(gè)匿名內(nèi)部類(lèi),因?yàn)樗旧硐喈?dāng)于接口的一個(gè)實(shí)現(xiàn)對(duì)象
        TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
//                按照成績(jī)總分從低到高排
                int result=(o1.math+o1.chinese)-(o2.math+o2.chinese);
//                如果總分不同返回i是兩個(gè)學(xué)生對(duì)象總成績(jī)的差值,如果總分相同則按姓名排序(compareTo一樣的話說(shuō)明姓名相同,說(shuō)明兩個(gè)元素重復(fù),則不會(huì)添加進(jìn)去)
                int i=result==0?o1.name.compareTo(o2.name):result;
                return i;
            }
        });
        Student s1=new Student("小明",88,99);
        Student s2=new Student("小華",87,100);
        Student s3=new Student("小天",86,94);
        Student s4=new Student("小亮",83,89);
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        System.out.println(ts);
    }
}

結(jié)果

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

相關(guān)文章

  • java?BigDecimal類(lèi)案例詳解

    java?BigDecimal類(lèi)案例詳解

    這篇文章主要介紹了java?BigDecimal類(lèi)案例詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • SpringBoot整合Minio實(shí)現(xiàn)圖片上傳功能

    SpringBoot整合Minio實(shí)現(xiàn)圖片上傳功能

    Minio是一款開(kāi)源的對(duì)象存儲(chǔ)服務(wù)器,它提供了一個(gè)云原生的、高性能的、易于擴(kuò)展的文件系統(tǒng)接口,用于存儲(chǔ)和檢索任意大小的數(shù)據(jù),本文將給大家介紹SpringBoot整合Minio實(shí)現(xiàn)圖片上傳功能,需要的朋友可以參考下
    2024-08-08
  • SpringBoot 項(xiàng)目中的圖片處理策略之本地存儲(chǔ)與路徑映射

    SpringBoot 項(xiàng)目中的圖片處理策略之本地存儲(chǔ)與路徑映射

    在SpringBoot項(xiàng)目中,靜態(tài)資源存放在static目錄下,使得前端可以通過(guò)URL來(lái)訪問(wèn)這些資源,我們就需要將文件系統(tǒng)的文件路徑與URL建立一個(gè)映射關(guān)系,把文件系統(tǒng)中的文件當(dāng)成我們的靜態(tài)資源即可,本文給大家介紹SpringBoot本地存儲(chǔ)與路徑映射的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-12-12
  • IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法

    IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法

    這篇文章主要介紹了IntelliJ IDEA里找不到j(luò)avax.servlet的jar包的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Springmvc攔截器執(zhí)行順序及各方法作用詳解

    Springmvc攔截器執(zhí)行順序及各方法作用詳解

    這篇文章主要介紹了Springmvc的攔截器執(zhí)行順序及各方法作用,下面講實(shí)現(xiàn)其接口的寫(xiě)法,先看一下這個(gè)接口的三個(gè)方法,需要的朋友可以參考下
    2018-07-07
  • 基于java中反射的總結(jié)分析

    基于java中反射的總結(jié)分析

    所謂反射,就是根據(jù)一個(gè)已經(jīng)實(shí)例化了的對(duì)象來(lái)還原類(lèi)的完整信息
    至少對(duì)我而言,我認(rèn)為它帶給我的好處是,讓我從下往上的又了解了一遍面向?qū)ο?/P>

    2013-05-05
  • Springboot項(xiàng)目啟動(dòng)優(yōu)化方式

    Springboot項(xiàng)目啟動(dòng)優(yōu)化方式

    文章詳細(xì)介紹了Spring Boot項(xiàng)目的啟動(dòng)優(yōu)化策略,包括懶加載、異步初始化、精簡(jiǎn)依賴(lài)、JVM優(yōu)化和使用Actuator監(jiān)控等方法,旨在提高項(xiàng)目的啟動(dòng)速度和運(yùn)行性能
    2025-03-03
  • java實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器

    java實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單音樂(lè)播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • springboot+shiro+jwtsession和token進(jìn)行身份驗(yàn)證和授權(quán)

    springboot+shiro+jwtsession和token進(jìn)行身份驗(yàn)證和授權(quán)

    最近和別的軟件集成項(xiàng)目,需要提供給別人接口來(lái)進(jìn)行數(shù)據(jù)傳輸,發(fā)現(xiàn)給他token后并不能訪問(wèn)我的接口,拿postman試了下還真是不行,檢查代碼發(fā)現(xiàn)項(xiàng)目的shiro配置是通過(guò)session會(huì)話來(lái)校驗(yàn)信息的,修改代碼兼容token和session
    2024-06-06
  • Maven如何打入依賴(lài)中指定的部分jar包

    Maven如何打入依賴(lài)中指定的部分jar包

    當(dāng)項(xiàng)目運(yùn)行的環(huán)境里已經(jīng)有一個(gè)jar包是pom文件依賴(lài)其他項(xiàng)目的jar包,所以最后得到的項(xiàng)目jar包中還需要打入其他項(xiàng)目的最新代碼,接下來(lái)通過(guò)本文給大家介紹Maven打入依賴(lài)jar包的操作工程,需要的朋友參考下吧
    2021-06-06

最新評(píng)論

化州市| 新昌县| 洛浦县| 扎囊县| 公主岭市| 潍坊市| 信丰县| 临西县| 嘉定区| 喀喇沁旗| 塔城市| 城口县| 达拉特旗| 特克斯县| 永泰县| 兴山县| 玛纳斯县| 兴城市| 宁海县| 西乌| 乾安县| 富宁县| 仁化县| 剑河县| 土默特右旗| 易门县| 安岳县| 公安县| 双牌县| 龙陵县| 株洲市| 文成县| 通州区| 怀安县| 达日县| 临武县| 武城县| 手机| 棋牌| 莆田市| 滨海县|