Comparable接口

如果想通过Arrays.sort()方法进行排序,必须实现此接口
实现类中必须重写int compareTo(T t)方法


Comparable 接口的缺点:
1. 只能为此接口的实现类定义一种排序方式;


2. 对于无法修改的类,或者没有源代码的类,

  不能通过 Comparable 接口实现排序

package cn.veryedu.zwx.arrays.comparable;

public class Emp implements Comparable<Emp> {

	private int empNo;
	private String name;
	private double salary;
	private int age;
	
	public int getEmpNo() {
		return empNo;
	}
	public void setEmpNo(int empNo) {
		this.empNo = empNo;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public String toString() {
		return "(empNo=" + empNo + ", name=" + name
				+ ", age=" + age + ", salary=" + salary + ")";
	}
	
	@Override
	public int compareTo(Emp emp) {
		/**
		if (this.salary == emp.salary) {
			return 0;
		} else if (this.salary > emp.salary) {
			return 1;
		} else {
			return -1;
		}
		*/
		return this.name.compareTo(emp.name);
	}
}

package cn.veryedu.zwx.arrays.comparable;

import java.util.Arrays;

public class TestArraysEmp {

	public static void main(String[] args) {
		Emp[] emps = new Emp[5];
		
		Emp e0 = new Emp();
		e0.setEmpNo(1008);
		e0.setName("zhang");
		e0.setSalary(3000);
		e0.setAge(21);
		emps[0] = e0;
		
		Emp e1 = new Emp();
		e1.setEmpNo(1002);
		e1.setName("wang");
		e1.setSalary(5000);
		e1.setAge(23);
		emps[1] = e1;
		
		Emp e2 = new Emp();
		e2.setEmpNo(1009);
		e2.setName("liu");
		e2.setSalary(4000);
		e2.setAge(20);
		emps[2] = e2;
		
		Emp e3 = new Emp();
		e3.setEmpNo(1014);
		e3.setName("li");
		e3.setSalary(3600);
		e3.setAge(27);
		emps[3] = e3;
		
		Emp e4 = new Emp();
		e4.setEmpNo(1100);
		e4.setName("chen");
		e4.setSalary(6000);
		e4.setAge(29);
		emps[4] = e4;
		
		System.out.println(Arrays.toString(emps));
		System.out.println();
		
		System.out.println("(e4 instanceof java.lang.Comparable) = " + (e4 instanceof java.lang.Comparable));
		
		Arrays.sort(emps);
		System.out.println(Arrays.toString(emps));
	}

}


你可能感兴趣的:(Comparable接口)