java如何⾃定义List中的sort()排序,⽤于⽇期排序
⽬录
java ⾃定义List中的sort()排序
1、问题描述
2、解决⽅法
3、其他
java Collections类:sort()升序排序
正向排序
java ⾃定义List中的sort()排序
1、问题描述
List是java中⼀个有序可重复的的集合,其中⾃带的.sort()排序⽅法,该⽅法在针对纯数字类型List集合排
序的时候很有效。但是对于装⼊其他类型的List集合,⾃带的sort()⽅法排序我们很难控制,⽐如⼀个⽇期集合的排序。
2、解决⽅法
java中List允许我们⾃定义sort()排序⽅法,以下⾃定义了List集合的sort排序⽅法,⽤于对⼀个字符串类型的⽇期集合进⾏排序。
//待排序的集合
List<String> list=new ArrayList<String>();
list.add("2019-06");
list.add("2019-11");
list.add("2019-02");
list.add("2019-09");
list.add("2019-05");
//⾃定义list排序,集合数据(⽉份)按升序排序;
java集合排序怎么实现final SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM");
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String month1, String month2) {
int mark = 1;
try {
Date date1 = sdft.parse(month1);
Date date2 = sdft.parse(month2);
Time() < Time()){
mark = -1;//调整顺序,-1为不需要调整顺序;
}
if(month1.equals(month2)){
mark = 0;
}
} catch (ParseException e) {
<("⽇期转换异常", e);
e.printStackTrace();
}
return mark;
} //compare
});
3、其他
另外java两个⽇期类型的对象也可以⽤如下⽅法进⾏⽐较。
Date() date1=new Date();
Date() date2=new SimpleDateFormat("yyyy-MM-dd").parse("2019-06-11");
Boolean flag;
if(date1.before(date2)){
flag=true;
}
a.before(b);该⽅法是判断a⽇期是否⼩于b⽇期,返回的是⼀个布尔类型结果。
java Collections类:sort()升序排序
正向排序
使⽤ Collections 类的静态⽅法 sort() 可以对集合中的元素进⾏升序排序。这要求列表中的所有元素都必须实现 Comparable 接⼝,⽽且所有元素都必须是使⽤指定⽐较器可相互⽐较的。
sort() ⽅法主要有如下两种重载形式
void sort(List list):根据元素的⾃然顺序对集合中的元素进⾏升序排序。
void sort(List list,Comparator comparator):按 comparator 参数指定的排序⽅式对集合中的元素进⾏排序。
public class Test{
public static void main(String[] args) {
Student Student =new Student("张1","6M");
Student Student1 =new Student("张2","1M");
Student Student2 =new Student("张4","5M");
Student Student3 =new Student("张5","1M");
List<Student> list=new ArrayList<Student>();
list.add(Student);
list.add(Student1);
list.add(Student2);
list.add(Student3);
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getAge()Age());
}
});
System.out.String());
}
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论