首页 > 其他 > 详细

Comparable和Comparator

时间:2019-03-26 17:54:20      阅读:98      评论:0      收藏:0      [点我收藏+]

在用Arrays.sort给对象数组进行排序时,要求必须对象实现Comparable接口。

技术分享图片
package com.sk;

import java.util.Arrays;

public class compare2 {
  public static void main(String[] args) {
    Employee[] staff=new Employee[4];
    staff[0]=new Employee("sk",10000.0);
    staff[1]=new Employee("sk3",110000.0);
    staff[2]=new Employee("sk4",80000.0);
    staff[3]=new Employee("sk2",70000.0);
    //该方法在对对象数组进行排序时,对象必须实现comparable接口
    Arrays.sort(staff);
    for (Employee employee : staff) {
        System.out.println(employee.getName()+":"+employee.getSalary());
    }
}
    
    

}
class Employee implements Comparable<Employee>{
    private String name;
    private Double salary;
    public String getName() {
        return name;
    }
    public Employee(String name, Double salary) {
        super();
        this.name = name;
        this.salary = salary;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public int compareTo(Employee other) {
        /**
         * Double.compare(x,y)方法:比较两个double值,x>y返回1。
         * 
         * compareTo方法的返回值为一个整型数值,如果两个对象不相等,则返回一个正值或负值。
         * 在对两个整数进行比较时,可以返回相减值,但是不适用于浮点型
         * 因为两个浮点数接近但又不想等时,他们的差四舍五入可能变成0;所以调用Double.compare方法
         */
        return Double.compare(salary,other.salary);
    }
    
}
Comparable

如果要给String类型按长度进行排序,虽然String实现了Comparable接口,但是String.compareTo方法是按字典顺序进行排序。

我们不能修改String的源码,这时候可以使用Comparator(比较器)。

技术分享图片
package com.sk;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;

public class compare implements Comparator<String>{

    @Override
    public int compare(String o1, String o2) {
        return o1.length()-o2.length();
    }
    public static void main(String[] args) {
        String [] strings={"3333","44"};
        //使用此方法,对象必须实现Comparator接口
        Arrays.sort(strings, new compare());
        for(int x=0;x<strings.length;x++)
        {
            System.out.println(strings[x]);
        }
    }
    

}
Comparator

可以使用lambda表达式更方便地使用Comparator。

Comparable和Comparator

原文:https://www.cnblogs.com/shank/p/10601678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!