Java集合碎片整理 三

2021-08-21 11:00:28 字數 1789 閱讀 5695

接著(二)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碎片整理優化

先來說一下什麼是碎片,怎麼知道碎片有多大!簡單的說,刪除資料必然會在資料檔案中造成不連續的空白空間,而當插入資料時,這些空白空間則會被利用起來.於是造成了資料的儲存位置不連續,以及物理儲存順序與理論上的排序順序不同,這種是資料碎片.實際上資料碎片分為兩種,一種是單行資料碎片,另一種是多行資料碎片.前...