接口--入门笔记(comparable接口的实现)

接口

在Java程序设计语言中,接口不是类,而是对类的一组需求的描述。

实现Commparable接口

Arrays类中的sort()方法承诺可以对对象数组进行排序,但是要求满足一个前提:对象所属的类必须实现了Commparable接口
下面是Commparable接口接口的实例

public interface Commparable<t>
{
	int commpareTo(T other);
}

这就是说,任何实现Comparable接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个Object对象,返回一个整型数值。
当然,接口中还有一个没有明确说明的附加要求:再调用x.compareTo(y)时,这个compareTo方法必须明确比较两个对象的内容,并返回比较结果。当x小于y时,返回一个负数,等于时,返回一个0,否则返回一个整数。
下面是一个是实现Comparable接口的程序

package com.bdqn.testInterface;

import java.time.LocalDate;
import java.util.Arrays;

public class Employee implements Comparable<Employee>
{
	/**
	 * 按工资排序
	 */
	public int compareTo(Employee other)
	{
		return Double.compare(salary,other.salary);
	}
	
	//定义员工的静态域
		private static int nextId = 1;
		
		//定义员工姓名
		private String name;
		//定义工资
		private double salary;
		//定义雇佣日期
		private LocalDate hireDay;
		//定义员工的编号
		private int id;
		
		public Employee()
		{
			
		}
		
		/**
		 * 定义构造方法(姓名,工资,入职日期,年、月、日)
		 * @param n
		 * @param s
		 * @param year
		 * @param month
		 * @param day
		 */
		public Employee(String n,double s,int year,int month,int day)
		{
			name = n;
			salary = s;
			hireDay = LocalDate.of(year,month,day);
			id = nextId;
			nextId++;
		}

		public String getName() {
			return name;
		}

		public double getSalary() {
			return salary;
		}

		public LocalDate getHireDay()
		{
			return hireDay;
		}
		
		public int getId()
		{
			return id;
		}
		
		/**
		 * 按百分比提高员工的工资
		 * @param byPercent
		 */
		public void raiseSalary(double byPercent)
		{
			double raise = salary * byPercent/100;
			salary += raise;
		}
		
		/**
		 * 比较员工的姓名
		 * @param other
		 * @return
		 */
		public boolean equals(Employee other)
		{
			return name.equals(other.name);
		}
		
		public static void main(String[] args)
		{
			//创建可以容纳三个员工对象的数组
			Employee[] staff = new Employee[3];
			
			//给三个员工类的容器放入对象
			staff[0] = new Employee("Steve",75000,1997,8,6);
			staff[1] = new Employee("Jum·sfay",65000,1998,6,23);
			staff[2] = new Employee("Kennedy",18990,2009,3,27);
			
			Arrays.sort(staff);
			
			for(Employee e : staff)
			{
				System.out.println("姓名:" + e.getName() + "\n编号:" + e.getId() +"\n工资:" + e.getSalary() + "\n入职日期:" + e.getHireDay() + "\n");
			}
		}
}

现在,Employee的对象数组就可以使用Arrays的sort()方法进行排序。
下面是campareTo()方法的实现细节:

public int compareTo(Employee other)
{
	return Double.compare(salary,other.salary);
}

这里我们使用了静态Double.compare()方法,当第一个数小于第二个数时,返回一个负数,等于时,返回一个0,否则返回一个整数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值