根據物件的某個欄位對List排序
阿新 • • 發佈:2019-02-18
首先說下需求,在開發中會遇到對List<Object>進行排序,這個也可以在資料庫裡面查詢排序出來,但是有的時候會在查出來之後做一些邏輯處理然後排序,所有就要用到物件排序。
- 首先建立一個類實現Comparator<T> 介面,並重寫int compare(T t1, T t2)介面
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; } } }
- new一個實現類物件,傳地引數需要排序的List物件和Comparator的實現類
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()); } }