接著(二)come on~
//treeset:可以實現去重和排序
public class tree
}class dog implements comparable
public string tostring()
public int compareto(object obj)
dog dog = (dog)obj;
int num = age - dog.age;
//返回值決定了該排序,是公升序還是降序,先判斷年齡是否相同再去判斷名字,若不理解可以更改num的正負進行測試。
return num==0?this.name.compareto(dog.name):num; } }
treeset:使用實現了comparator介面的比較器物件實現比較—–人工排序
例項:將字串按照從短到長排序,長度相同再按照字典排序.
總結來說對treeset有以下兩種排序方法
第一種是利用實現comparable介面的compareto方法(系統排序)
第二種是利用實現comparator介面的compare方法(人工排序)
系統讓第二種排序的優先順序高於第一種,方便人工排序的實現
public
class lone
}//自己建立乙個按照字串長度比較的比較器類
//其實也沒什麼難的,和之前重寫的流程差不太多
class comparewithlength implements comparator
if(!(a2 instanceof string))
string string1 = (string)a1;
string string2 = (string)a2;
int s = string1.length()-string2.length();
return s==0?string1.compareto(string2):s;
}}
接下來 泛型走一走~(@^_^@)~
泛型:通過《資料型別》接受一種資料型別 在編譯的時候會使用這種型別檢測集合中的元素 如果不是<>中規定的型別
就不允許新增到集合中,編譯不會通過
<>中定義的型別就是泛型
泛型的作用:
1.使用了泛型不再需要進行強制型別轉換,容錯處理,向下轉型
2.將執行階段的問題提前到了編譯階段,提高了**的安全性 ,提高了程式設計的效率
泛型使用的位置:1.類上2.方法上3.介面上
//未指定泛型的時候
public
class test}}
}//當指定泛型的時候
public
class test
}}
小練習:將dog的物件存入treeset 使用人工方法進行去重排序
public
class practice
}class comwithageandname implements comparator
if(!(o2 instanceof dog))
dog dog1 = (dog)o1;
dog dog2 = (dog)02;
int num = dog1.age - dog2.age;
return num==0?dog1.name.compareto(dog2.name):num;
}}class dog
public string tostring()
}
java集合知識碎片化整理
collection介面 collection可以說是處理物件集合的父介面,其下有兩個子介面分別是list和map。需要注意的是 map不是collection的子介面!這是一定要記住的喲 collection介面中的方法如下 這其中,我們可以看到有幾個常用的方法,比如方法add 新增乙個元素到集合...
java知識碎片整理 物件導向
一 物件導向的特性 物件導向有三大特性 1 封裝性 2 繼承性 3 多型性。1 封裝性 簡單來說所謂的封裝性就是黑盒子,將不想讓外界訪問的資料和方法統統扔進黑盒子,只留給外界乙個開放的按鈕 介面 外界不需要知道程式內部是怎樣執行的,只需要知道通過開放的介面可以達到什麼結果。2 繼承性 在開發過程,常...
mysql索引碎片整理 MysqL碎片整理優化
先來說一下什麼是碎片,怎麼知道碎片有多大!簡單的說,刪除資料必然會在資料檔案中造成不連續的空白空間,而當插入資料時,這些空白空間則會被利用起來.於是造成了資料的儲存位置不連續,以及物理儲存順序與理論上的排序順序不同,這種是資料碎片.實際上資料碎片分為兩種,一種是單行資料碎片,另一種是多行資料碎片.前...