給Java.util.List按指定順序排序
阿新 • • 發佈:2019-01-01
開發中有時需要給List排序,大家都知道List本身是排序的,但它內部排序是按照存入順序排序的,故而有時候這並不是我們所需要的。
為此,我們需要按照我們的意願把List裡面的object排序。
例子:
實現List裡面Object類的配需
Object裡面有一個時間欄位 HH:mm
需要讓Object實現Comparable介面,並實現其方法;
package com.ringtop.global.entity.livemanage; import java.text.ParseException; import java.text.SimpleDateFormat; public class PageLiveInfo implements Comparable { private String liveTime; public PageLiveInfo(String liveTime) { super(); this.liveTime = liveTime; } @Override public String toString() { return "PageLiveInfo [liveTime=" + liveTime + "]"; } public String getLiveTime() { return liveTime; } public void setLiveTime(String liveTime) { this.liveTime = liveTime; } @Override public int compareTo(Object pf) { PageLiveInfo plf = (PageLiveInfo) pf; String t1 = plf.getLiveTime(); String t2 = this.getLiveTime(); t1 = "2012-01-01 " + t1; t2 = "2012-01-01 " + t2; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); int l1 = 0; int l2 = 0; try { l1 = (int) sdf.parse(t1).getTime(); l2 = (int) sdf.parse(t2).getTime(); } catch (ParseException e) { e.printStackTrace(); } return l2 > l1 ? 1 : -1; //按照時間的由小到大排列 } }
讓類實現Comparable類並實現其方法後 便可以使用Collections的排序方法按照我們指定的序列排序了。
List<Object> list = new ArrayList<Object>();
list.add(object1);
list.add(object2);
Collections.sort(list);
//最後打印出來的object就是按照給定的順序排好序的序列