1. 程式人生 > >給Java.util.List按指定順序排序

給Java.util.List按指定順序排序

開發中有時需要給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就是按照給定的順序排好序的序列