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

Java中的LinkedHashSet和TreeSet解讀

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

一,LinkedHashSet

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

二,TreeSet

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

三,排序

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

Comparator比較器

  • 當(dāng)使用帶參構(gòu)造時,需要傳Comparator接口(實際傳得應(yīng)該是他的實現(xiàn)類對象)
  • 由于匿名內(nèi)部類就相當(dāng)于一個接口的實現(xiàn)類所以可以用匿名內(nèi)部類代替,否則需要寫一個接口實現(xiàn)類,然后創(chuàng)建它的對象傳進去
  • 最后用復(fù)雜一點的比較器練習(xí)一下
  • Student類,當(dāng)使用無參構(gòu)造即自然排序時需要實現(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+" "+"語文:"+chinese+" "+"數(shù)學(xué):"+math+"\t";
    }
}

測試類

import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest {
    public static void main(String[] args) {
//        TreeSet的有參構(gòu)造,可以寫一個Comparabor的實現(xiàn)類然后創(chuàng)建對象傳進來,也可以直接寫一個匿名內(nèi)部類,因為他本身相當(dāng)于接口的一個實現(xiàn)對象
        TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
//                按照成績總分從低到高排
                int result=(o1.math+o1.chinese)-(o2.math+o2.chinese);
//                如果總分不同返回i是兩個學(xué)生對象總成績的差值,如果總分相同則按姓名排序(compareTo一樣的話說明姓名相同,說明兩個元素重復(fù),則不會添加進去)
                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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MAC下如何設(shè)置JDK環(huán)境變量

    MAC下如何設(shè)置JDK環(huán)境變量

    這篇文章主要介紹了MAC下如何設(shè)置JDK環(huán)境變量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 關(guān)于ConditionalOnMissingBean失效問題的追蹤

    關(guān)于ConditionalOnMissingBean失效問題的追蹤

    這篇文章主要介紹了關(guān)于ConditionalOnMissingBean失效問題的追蹤方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Mybatis-Plus通用枚舉的使用詳解

    Mybatis-Plus通用枚舉的使用詳解

    這篇文章主要介紹了Mybatis-Plus通用枚舉的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Linux centos7環(huán)境下jdk安裝教程

    Linux centos7環(huán)境下jdk安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下jdk的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • java token生成和校驗的實例代碼

    java token生成和校驗的實例代碼

    這篇文章主要介紹了java token生成和校驗的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java編程思想對象的容納實例詳解

    Java編程思想對象的容納實例詳解

    這篇文章主要介紹了Java編程思想對象的容納實例詳解,內(nèi)容比較詳細(xì),涵蓋的東西也比較多,具有參考價值,需要的朋友了解下。
    2017-09-09
  • mongo分布式鎖Java實現(xiàn)方法(推薦)

    mongo分布式鎖Java實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄猰ongo分布式鎖Java實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Sharding-Proxy基本功能用法介紹

    Sharding-Proxy基本功能用法介紹

    這篇文章介紹了Sharding-Proxy基本功能用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • 一文帶你學(xué)會規(guī)則引擎Drools的應(yīng)用

    一文帶你學(xué)會規(guī)則引擎Drools的應(yīng)用

    Drools?就是一個開源的業(yè)務(wù)規(guī)則引擎,可以很容易地與?spring?boot?應(yīng)用程序集成,這篇文章就來和大家詳細(xì)聊聊Drools的具體應(yīng)用,需要的可以參考一下
    2023-03-03
  • Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子

    Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子

    這篇文章主要介紹了Java中float類型的范圍及其與十六進制的轉(zhuǎn)換例子,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10

最新評論