比如,某個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...