List排序
ArrayList sort() 方法
arraylist.sort(Comparator c)
看一下源码:
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
conparator 方法是对String 类型的数据进行排序。
/**
* Formats a Date into a date/time string.
* @param date the time value to be formatted into a time string.
* @return the formatted time string.
*/
public final String format(Date date)
{
return format(date, new StringBuffer(),
DontCareFieldPosition.INSTANCE).toString();
}
sort()应用
例子1:
Map<String,Object> eInfo = new HashMap<>();
// 指定格式化格式
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//强转为Date类型
Date date=(Date) eInfo.get("0");
format 方法对Date类型的数据转为String类型,存入map
map.put("date",format1.format(date));
list.add(map);
....
//排序,compareTo()方法是对String类型的数据排序
=list.sort((Map<String,Object> m1, Map<String,Object> m2) -> m2.get("date").toString().compareTo(m1.get("date").toString()));
例子2
List<ExamRecordQuery> list = orExamRecordMapper.selectEaxmRecordList(wrapper);
//排序
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
list.sort((ExamRecordQuery m1, ExamRecordQuery m2) -> format1.format(m2.getDates()).compareTo(format1.format(m1.getDates())));
参考:
菜鸟教程