當前位置:首頁 » 編程語言 » java的treeset

java的treeset

發布時間: 2022-09-06 10:46:43

『壹』 關於java Treeset排序

例: 對加入 TreeSet的Student對象 實現Comparable介面,通過在Student中重寫compareTo()方法確定該對象在TreeSet中的排序方式 Student類如下 class Student implements Comparableprivate int age;//重寫compareTo()方法public int compareTo(Object o){Student s = (Student) o;if (this.age < s.age )return -1;else if(s.age == this.age)return 0;elsereturn 1;}當Student對象加入TreeSet時,是按年齡從小到大排序的。

『貳』 關於java中TreeSet類的一些問題

范型E是TreeSet的類型參數,比較器的類型參數應該是TreeSet類型參數的父類
Person是比較器的類型參數,Worker是TreeSet的類型參數,Person是Worker的父類,所以沒毛病

『叄』 java TreeSet能存放兩個相同的元素嗎

TreeSet會調用集合元素的compareTo(Object obj)方法來比較元素之間大小關系,然後將集合元素按升序排列,這種方式就是自然排序。(比較的前提:兩個對象的類型相同),也就是說TreeSet是不能存放兩個相同的元素的。
TreeSet繼承於Set,而Set這個集合本身是不能存放兩個相同的元素的。

『肆』 請教大師一個關於java中TreeSet的構造方法的問題:

這一個TreeSet構造方法裡面傳遞的是一個比較器,也就是說兩個對象進行比較的時候,調用這個比較器進行比較。(或者說是比較兩個對象大小的標准)
API如下:

TreeSet(Comparator<? super E> comparator)

構造一個新的空 TreeSet,它根據指定比較器進行排序。

『伍』 java中TreeSet實現了Comparable介面嗎還是說添加到它裡面的元素實現了該介面

TreeSet是依靠TreeMap來實現的。
TreeSet是一個有序集合,TreeSet中的元素將按照升序排列,預設是按照自然排序進行排列,意味著TreeSet中的元素要實現Comparable介面。或者有一個自定義的比較器。
演算法可以看JDK的源代碼

『陸』 java中treeset定製排序和自然排序的區別

* TreeSet:
* 1.向TreeSet中添加的元素必須是同一個類的。
* 2.可以按照添加進集合中的元素的指定的順序遍歷。像String、包裝類等默認按照從小到大的順序遍歷。
* 3.自然排序:當向TreeSet中添加自定義類的對象時,有兩種排序方法:①自然排序 ②定製排序
* 4.自然排序:要求自定義類實現java.lang.Comparable介面並重寫其compareTo(Object obj)
* 在此方法中,指明按照自定義類的哪個屬性來排序。
*
* 5.向TreeSet中添加元素時,首先按照compareTo()進行比較,一旦返回0,雖然僅是兩個對象的
* 此屬性值相同,但是程序會認為這兩個對象是相同的,進而後一個對象就不能添加進來。
*
* >compareTo()與hashCode()以及equals()三者保持一致!
*

『柒』 求Java程序,TreeSet問題

importjava.util.Iterator;
importjava.util.Scanner;
importjava.util.TreeSet;
publicclassDay14_B{
staticScannersc=newScanner(System.in);
staticTreeSet<Double>ts=newTreeSet<Double>();
publicstaticvoidmain(String[]args){
while(ts.size()<10){
System.out.print("輸入:");
ts.add(sc.nextDouble());
}
for(Iterator<Double>it=ts.iterator();it.hasNext();){
System.out.print(it.next()+",");
}
sc.close();
}
}

『捌』 Java中TreeSet是關鍵字嗎

TreeSet是一個有序集合,其元素按照升序排列。
默認是按照自然順序排列,也就是說TreeSet中的對象元素需要實現Comparable介面。

『玖』 java中的treeset是實現了sortedset介面的set,但為什麼要叫treeset呢

treeset實現了sortedset介面,也就是重寫了裡面的方法,但具體實現的方式由實現的子類自己編寫,所以treeset在實現set集合採用的演算法是樹型演算法。

TreeSet是一個有序集合,TreeSet中的元素將按照升序排列,預設是按照自然排序進行排列,意味著TreeSet中的元素要實現Comparable介面。或者有一個自定義的比較器。Treeset演算法:

構造一個新的空TreeSet,它根據指定比較器進行排序。插入到該set的所有元素都必須能夠由指定比較器進行相互比較:對於set中的任意兩個元素e1和e2,執行comparator.compare(e1,e2)都不得拋出ClassCastException。如果用戶試圖將違反此約束的元素添加到set中,則add調用將拋出ClassCastException。
packagetest.treeset;

importjava.util.Comparator;
importjava.util.Iterator;
importjava.util.TreeSet;

publicclassTreeSetTest{
@SuppressWarnings("unchecked")
publicstaticvoidmain(String[]args){
TreeSetts=newTreeSet(newTeacher2.TeacherCompare());
ts.add(newTeacher2("zhangsan",2));
ts.add(newTeacher2("lisi",1));
ts.add(newTeacher2("wangmazi",3));
ts.add(newTeacher2("mazi",3));
Iteratorit=ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}

classTeacher2{
intnum;
Stringname;

Teacher2(Stringname,intnum){
this.num=num;
this.name=name;
}

publicStringtoString(){
return"學號:"+num+"姓名:"+name;
}

{//老師自帶的一個比較器
//o1中存放的事目標節點
//o2中存放時的紅黑二叉樹中的節點,從根節點開始比較
publicintcompare(Objecto1,Objecto2){
Teacher2s1=(Teacher2)o1;//轉型
Teacher2s2=(Teacher2)o2;//轉型
intresult=s1.num>s2.num?1:(s1.num==s2.num?0:-1);
if(result==0){
result=s1.name.compareTo(s2.name);
}
returnresult;
}

}

}

『拾』 java TreeSet問題

  1. TreeSet是集合,是用來存數據的,就像數組一樣,但TreeSet是動態的。

  2. TreeSet存的數據是無序號的,你不能通過get的方法獲得裡面的數據。

  3. TreeSet存數據是有順序的,這個順序是你規定的,規定方法就是通過實現Comparator介面。

  4. 你上面的存儲順序的規則就是static class compareToStudent implements Comparator {....... }這個方法,至於public int compareTo(Object o) {.....}那是它的一部分,你可以理解成:


    {
    ....
    if(result==0){
    publicintcompareTo(Objecto){.....}
    }
    }
    剩下的應該自己思考。。。
熱點內容
oicq伺服器地址 發布:2025-01-13 17:34:19 瀏覽:928
默認管理密碼是什麼 發布:2025-01-13 17:33:33 瀏覽:443
系列影視廣告文案腳本 發布:2025-01-13 17:31:57 瀏覽:792
防盜器編程 發布:2025-01-13 17:24:39 瀏覽:899
聯通電信伺服器怎麼不卡頓 發布:2025-01-13 17:21:30 瀏覽:821
科沃茲低配可以升級哪些配置 發布:2025-01-13 17:09:26 瀏覽:329
android判斷資料庫是否存在 發布:2025-01-13 17:08:17 瀏覽:333
ie腳本運行錯誤 發布:2025-01-13 17:08:05 瀏覽:623
python中或者怎麼表示 發布:2025-01-13 16:32:33 瀏覽:291
易達加密鎖 發布:2025-01-13 16:27:23 瀏覽:516