真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java中TreeSet類如何使用-創(chuàng)新互聯(lián)

Java中TreeSet類如何使用,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

蒲城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

首先自定義一個Student類,類里面有三個屬性,分別是姓名、學(xué)號、年齡

public class Student{
 
 
  private String name;
  private String num;
  private int age;
 
 
  Student(String name, String num, int age) {
    this.name = name;
    this.num = num;
    this.age = age;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getNum() {
    return num;
  }
 
  public void setNum(String num) {
    this.num = num;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    this.age = age;
  }
}

然后我們給這個類的三個屬性添加值,并且將類的實例化對象添加到TreeSet類中。

注意:TreeSet類是沒有g(shù)et方法的,要輸出里面的內(nèi)容得通過foreach循環(huán)或者迭代器輸出,如果直接通過print進(jìn)行輸出,顯示的是內(nèi)存地址對象。

然后我們來看下輸出結(jié)果

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

public class TreeSet {

  public static void main(String[] args) {


    Student s1 = new Student("張珊", "111213", 18);
    Student s2 = new Student("隔壁", "111215", 19);
    Student s3 = new Student("翠花", "111214", 12);
    Student s4 = new Student("老王", "111212", 11);
    Student s5 = new Student("老黑", "111212", 11);


    Set set = new java.util.TreeSet();

    set.add(s1);
    set.add(s2);
    set.add(s3);
    set.add(s4);
    set.add(s5);

//   通過迭代器輸出結(jié)果
    Iterator iterator = set.iterator();
    while (iterator.hasNext()) {
      Student o = (Student) iterator.next();
      System.out.println(o.getName());

    }


  }


}

Java中TreeSet類如何使用

可以看到無法正常輸出,報錯。這里報錯的原因是類型轉(zhuǎn)換錯誤。因為將對象存入TreeSet類中時需要對對象進(jìn)行一個比較,第一次存入時因為沒有可對比的對象,所以不會報錯,但是當(dāng)?shù)诙€對象存入時需要同第一個對象進(jìn)行比較,再決定在二叉樹中存放的位置。這里的比較方法需要我們自己去實現(xiàn)Comparable<>接口重寫一個compareTo()方法。

那么現(xiàn)在在自定義Student類中實現(xiàn)Comparable并且重現(xiàn)compareTo()方法

public class Student implements Comparable{
 
 
  private String name;
  private String num;
  private int age;
 
 
  Student(String name, String num, int age) {
    this.name = name;
    this.num = num;
    this.age = age;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public String getNum() {
    return num;
  }
 
  public void setNum(String num) {
    this.num = num;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    this.age = age;
  }
 
 
 
  @Override
  public int compareTo(Student o) {
//通過年齡的比較確定存放順序
    return this.age-o.age;
  }
}

現(xiàn)在看下輸出結(jié)果

Java中TreeSet類如何使用

可以看到存入的內(nèi)容可以正常輸出的了,但是老黑沒有輸出,這是因為老黑和老王的年齡相同,而我們重寫的compareTo()方法中的比較條件就是年齡。下面來看看這個方法中的返回值的含義。

@Override
  public int compareTo(Student o) {
 
    return 0;     return 1;     return -1;
  }

compareTo()方法的返回值類型是int類型,在這里只存在三種情況,分別是:大于0,小于0,和等于0。

TreeSet的底層結(jié)構(gòu)是一個二叉樹,每次插入的對象都會根據(jù)二叉樹的結(jié)構(gòu)進(jìn)行排列。當(dāng)前后兩個對象的條件進(jìn)行比較返回正數(shù)時,后一個對象會存在已前一個對象為根的右節(jié)點;當(dāng)前后兩個對象的條件進(jìn)行比較返回負(fù)數(shù)時,后一個對象會存在已前一個對象為根的左節(jié)點;當(dāng)前后兩個對象的條件進(jìn)行比較返回0時,后一個對象不存入TreeSet中。因為老黑和老王年齡相同,所以這里名字為老黑的對象就不存入了。

看完上述內(nèi)容,你們掌握J(rèn)ava中TreeSet類如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享標(biāo)題:Java中TreeSet類如何使用-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/ccjjsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部