JAVA 按時間排序
阿新 • • 發佈:2018-12-09
排序使用的是
Collections.sort(List,Comparator)
自定義類實現Comparator介面
假如A的值大於B,你返回1。這樣呼叫Collections.sort()方法就是升序
假如A的值大於B,你返回-1。這樣呼叫Collections.sort()方法就是降序
import com.lanhetech.api.iso8583msg.utils.MyLog; import com.lanhetech.model.user.Trade; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Comparator; import java.util.Date; /** * 訂單按時間排序,最近的日期顯示在上面 */ public class ComparatorDate implements Comparator { public static final String TAG = "ComparatorDate"; SimpleDateFormat format = new SimpleDateFormat("yyyy/M/d H:mm:ss"); public int compare(Object obj1, Object obj2) { Trade t1 = (Trade) obj1; Trade t2 = (Trade) obj2; // return t1.getTradetime().compareTo(t2.getTradetime()); // 時間格式不好,不然可以直接這樣比較 Date d1, d2; try { d1 = format.parse(t1.getTradetime()); d2 = format.parse(t2.getTradetime()); } catch (ParseException e) { // 解析出錯,則不進行排序 MyLog.e(TAG, "ComparatorDate--compare--SimpleDateFormat.parse--error"); return 0; } if (d1.before(d2)) { return 1; } else { return -1; } } }
使用:
ComparatorDate c = new ComparatorDate(); Collections.sort(notRechargeTrades, c); // 訂單按時間排序 Collections.sort(isFinishTrades, c);
private List<Trade> notRechargeTrades = new ArrayList<>(); private List<Trade> backMoneyTrades = new ArrayList<>(); private List<Trade> isFinishTrades = new ArrayList<>();
public class Trade extends ComUser implements Serializable { .... private String tradetime; // 充值時間 ....