1. 程式人生 > >根據物件的某個欄位對List排序

根據物件的某個欄位對List排序

首先說下需求,在開發中會遇到對List<Object>進行排序,這個也可以在資料庫裡面查詢排序出來,但是有的時候會在查出來之後做一些邏輯處理然後排序,所有就要用到物件排序。

  1. 首先建立一個類實現Comparator<T> 介面,並重寫int compare(T t1, T t2)介面
  2. import java.util.Comparator;
    
    /**
     * Created by wanghaiyang on 2016/4/11.
     */
    public class ComparatorUtil implements Comparator<ApiCounterResponse> {
        //倒序排列即從大到小,若需要從小到大修改返回值1 和 -1 
        public int compare(ApiCounterResponse o1, ApiCounterResponse o2) {
            double tempResult1 = o1.getTempResult();
            double tempResult2 = o2.getTempResult();
            if (tempResult1 > tempResult2) {
                return -1;
            } else if (tempResult1 < tempResult2) {
                return 1;
            } else {
                return 0;
            }
        }
    }
    

  3. new一個實現類物件,傳地引數需要排序的List物件和Comparator的實現類
  4.  public static void main(String[] args) {
            List<ApiCounterResponse> listCounter = new ArrayList<ApiCounterResponse>();
    
            for (int i = 0; i < 10; i ++) {
                ApiCounterResponse api = new ApiCounterResponse();
                api.setMethodId(1L + i);
                api.setTempResult(2.34 + i);
                listCounter.add(api);
                System.out.println(listCounter.get(i).getMethodId());
            }
    
            //在這裡進行排序(具體實現看原始碼)   
            Comparator comp = new ComparatorUtil();
            Collections.sort(listCounter, comp);
    
            for (int i = 0; i < listCounter.size(); i++) {
                System.out.println(listCounter.get(i).getMethodId());
            }
        }