关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回

Java Comparable和Comparator对比详解

发布时间:2022-09-27 11:06:29

在实际项目开发过程中,我们经常需要对某个对象或者某个集合中的元素进行排序,常用的两种方式是实现某个接口。常见的可以实现比较功能的接口有Comparable接口和 Comparator接口,那么这两个又有什么区别呢?

关于Comparable接口

关于Comparable接口,其位于 java.lang.Comparable 中,实现这个接口,可以通过重写其 compareTo 方法进行自定义排序,一般用于实体类中,比如针对学生对象,根据其姓名、身高、年龄、地址等进行排序,商品根据名称、库存、价格排序等。下面一段代码中主要是对 学生的姓名、年龄、地址进行排序,当我们重写其 compareTo 方法后,对于一个学生对象的集合,我们可以通过调用 Collections.sort(studentList) 对其进行排序,即可达到想要的效果。

public class Students implements Comparable<Students> {

  private String name;
  private int age;
  private String address;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public String getAddress() {
    return address;
  }

  public void setAddress(String address) {
    this.address = address;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("姓名:").append(this.name);
    sb.append("年龄:").append(this.age);
    sb.append("地址:").append(this.address);
    return sb.toString();

  }

  // 重写排序方法,先根据年龄升序,再根据姓名降序,最后根据地址升序
  @Override
  public int compareTo(Students o) {
    int result= 0;
    result = this.age - o.getAge();
    if (0 == result){
      result = o.getName().compareTo(this.getName());
      if (0 == result){
        result = this.getAddress().compareTo(o.getAddress());
      }
    }
    return result;
  }
}

另外有需要云服务器可以了解下风纳云fengnayun.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


/template/Home/Dawn/PC/Static

选择风纳云,也许是您成就一番大事业的开端

注册账号