[Java] 如何在 ArrayList 中以物件的特定條件做排序?

ArrayList 是 Java 一個很常用的物件,而這個物件其實可以就像是 c++ 中的「vector」,可以讓你無窮無盡地增加「物件」陣列長度,而且輕易操作,而相關的操作可以看一下海芋之前寫的「ArrayList 筆記」。

ArrayList 僅能增加「物件」長度,問題來了,並非每個物件都是「Integer」、「Double」這種好判斷的物件,舉例來說,我們要使用的物件,有可能是學生的基本資料,我們想要依學生的年齡做排序,而並非以學生的姓名做排序,這時我們該怎麼做呢?

在解釋怎麼做之前,我們先來建一個「學生資料」的相關物件。

public class StudentData
{
   public int  ID      = 0;
   public String Name   = null;
   public int  Age   = 0;
}

 

假設,我們有一個 ArrayList 存的內容是「學生資料」,如下面的範例。

ArrayList m_data = new ArrayList();

 

再假設,這個 ArrayList 已經有許多筆學生的資料,那麼我們如何以「學生資料中的Age欄位」,來針對這個 ArrayList 做排序呢?答案很簡單,只要在排序時new一個「Comparator」這個元件就好了,而以下為範例程式碼。

Collections.sort(m_data, new Comparator<StudentData>(){
 @Override
 public int compare(StudentData o1, StudentData o2) {
  return o1.Age - o2.Age;
 }   
});

 

講到這裡,這個程式已經講解完畢,希望對你有幫助囉!

About 張海芋

城市裡的小小迷僮工程師,喜歡用鍵盤記錄個人生活的點滴,身邊的人事物都我的靈感,用心踏出每個腳步,用文字灌溉《海芋小站》,用專業解決問題。

發表迴響