Java Collections.sort()实现List排序的默认方法和自定义方法

本文介绍两种在Java中实现对象排序的方法:一种是通过让类实现Comparable接口并重写compareTo方法;另一种是定义一个比较器类实现Comparator接口并重写compare方法。这两种方法均可用于集合排序,且提供了升序和降序的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、第一种是model类实现Comparable接口,重写重写int compareTo(Object o)方法



public class StudentDTO implements Comparable{
 private String name;
 private int age;
public String getName(){
 return name;
}
public void setName(String name){
  this.name = name;
}
public ObjType getType(){
 return type;
}
public void setAge(int age){
  this.age= age;
}
@Override
public int compareTo(Object o){
  StudentDTO sdto = (StudentDTO)o;
  int otherAge = sdto.getAge();
  // note: enum-type's comparation depend on types' list order of enum method
  // so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
  return this.age.compareTo(otherAge);
}
}
   主方法:   
public static void main(String[] args)
{
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
  StudentDTO s1 = new StudentDTO ();
  s.setName("lily");
  s.setAge(23);
  studentList.add(s2);
  Collections.sort(studentList); //按照age升序 22,23,
  Collections.reverse(studentList); //按照age降序 23,22 
}

2、比较器类实现Comparator接口,重写int compare(Object o1, Object o2)方法

public class StudentDTO implements Comparable{
  private String name;
  private int age;
  public String getName(){
   return name;
  }
  public void setName(String name){
   this.name = name;
  }
  public ObjType getType(){
   return type;
  }
  public void setAge(int age){
   this.age= age;
  }
} 
   比较器类:
class MyCompartor implements Comparator{
  @Override
  public int compare(Object o1, Object o2){
   StudentDTO sdto1= (StudentDTO )o1;
   StudentDTO sdto2= (StudentDTO )o2;
   return sdto1.getAge.compareTo(stdo2.getAge())
 }
}
   主方法:
public static void main(String[] args){
  List<StudentDTO> studentList = new ArrayList();
  StudentDTO s1 = new StudentDTO ();
  s.setName("yuanyuan");
  s.setAge(22);
  studentList.add(s1);
  StudentDTO s1 = new StudentDTO ();
  s.setName("lily");
  s.setAge(23);
  studentList.add(s2);
  MyComparetor mc = new MyComparetor();
  Collections.sort(studentList,mc);  //按照age升序 22,23,
  Collections.reverse(studentList,mc); //按照age降序 23,22 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值