對List中的物件按照特定屬性進行排序

2021-08-29 03:59:59 字數 1292 閱讀 3511

比如,某個list中儲存了student類的物件,比較簡單的,我們要對list中的student類的物件按照他們的年齡排序(公升序、降序均有可能)。collections.sort()方法可以對integer、string等已經實現comparable介面的類直接進行排序,但是student類是原生的,如果直接硬生生的使用collections.sort(testlist)方法,估計就會按照物件的儲存位址直接排序了。很明顯,這不是我們想要的結果。其次,collections.sort()方法預設是公升序排序的,而現實需求中,降序排序也是很大概率出現的需求。主要的實現方法有兩種:

(1)student類實現comparable介面,重寫compareto()方法,實現如下:

class student

public string getstudentname()

public void setstudentname(string studentname)

public int getage()

public void setage(int age)

public string get***()

public void set***(string ***)

//重寫compareto方法

@override

public int compareto(student student)

return 0;

}}

這樣之後,比如我們在main()方法裡邊例項化幾個student類的物件,然後直接呼叫collections.sort(testlist);其中,testlist用於儲存student類的物件,**貼上如下:

public static void main(string args) 

}

通過觀察迴圈輸出,我們可以發現是按照公升序輸出的,如果要實現降序輸出,只需要將student類中的compareto()方法中的返回值都取反即可。

(2)student類不實現comparable介面,而是在呼叫collections.sort()方法時,new comparator()物件出來,實現公升序或者降序操作,student類中只需要簡單的屬性和set、get方法。**貼上如下:

public static void main(string args) 

}

我們可以看到,按照上邊的**,列印到控制台的輸出是降序的,當然如果要改為公升序,只需要將上述的compare()方法中的返回值取反即可。動手實現驗證了下,記錄下來,加深印象,方便以後使用。

對List集合中物件的某個屬性進行排序

通過讓實體類實現comparable介面,並重寫compareto方法。lombok自動生成getset及tostring data public class entity implements comparable override public int compareto entity o el...

js中對乙個物件陣列按照物件某個屬性進行排序

我們現在有一組 學生 物件,包含 名字,年齡,分數 等屬性,現在要求乙個演算法,把這些物件放在乙個陣列裡,可以實現按照年齡或者分數對這些物件進行排序。var sdts 那麼考點在哪呢,實際上在於陣列物件的sort方法 array.sort fun fun是乙個函式,排序根據這個函式返回值來進行判斷,...

對List中物件的去重

今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用map un...