import java.util.*;class Employee implements Comparable{
private String name;
private double salary;
private Date hireDay;
public Employee(String n,double s,int year,int month,int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month,day);
hireDay = calendar.getTime();
}
public boolean equals(Object otherObject){
if(this == otherObject) return true;
if(otherObject == null) return false;
if(getClass() != otherObject.getClass()) return false;
Employee other = (Employee)otherObject;
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
public int hashCode(){
return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
}
public int compareTo(Object o){
Employee o = (Employee) o;
if(salary > o.salary) return -1;
if(salary < o.salary) return 1;
return 0;
}
}public class ObjTest {
public static void main(String[] args){
Employee hua1 = new Employee("xiaohua",100000,1980,8,28);
Employee hua2 = hua1;
Employee hua3 = new Employee("xiaohua",100000,1980,8,28);
Employee xue = new Employee("xue",1000000,1984,2,14);
System.out.println("hua1 == hua2: " + (hua1 == hua2));
System.out.println("hua1 == hua3: " + (hua1 == hua3));
System.out.println("hua1 equals hua2 :" + hua1.equals(hua2));
System.out.println("hua1 equals hua3 :" + hua1.equals(hua3));
System.out.println("hua1 hashCode: " + hua1.hashCode());
System.out.println(xue.compareTo(hua1));
}
}
private String name;
private double salary;
private Date hireDay;
public Employee(String n,double s,int year,int month,int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month,day);
hireDay = calendar.getTime();
}
public boolean equals(Object otherObject){
if(this == otherObject) return true;
if(otherObject == null) return false;
if(getClass() != otherObject.getClass()) return false;
Employee other = (Employee)otherObject;
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
public int hashCode(){
return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
}
public int compareTo(Object o){
Employee o = (Employee) o;
if(salary > o.salary) return -1;
if(salary < o.salary) return 1;
return 0;
}
}public class ObjTest {
public static void main(String[] args){
Employee hua1 = new Employee("xiaohua",100000,1980,8,28);
Employee hua2 = hua1;
Employee hua3 = new Employee("xiaohua",100000,1980,8,28);
Employee xue = new Employee("xue",1000000,1984,2,14);
System.out.println("hua1 == hua2: " + (hua1 == hua2));
System.out.println("hua1 == hua3: " + (hua1 == hua3));
System.out.println("hua1 equals hua2 :" + hua1.equals(hua2));
System.out.println("hua1 equals hua3 :" + hua1.equals(hua3));
System.out.println("hua1 hashCode: " + hua1.hashCode());
System.out.println(xue.compareTo(hua1));
}
}
解决方案 »
- 求整型数组里任意两个数之和为7的数字对
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 iReport分页问题
- java 继承中向上转型和向下转型问题
- 100分,如何让J2SE程序自动起动SQL服务,并自行联接数据库??
- 垃圾邮件过滤的实现
- 请教!!java中的参数传值还是传引用?
- java中的String类的问题
- 那位仁兄熟 jface, swing 的 谈谈?有前途吗?哪个好用?
- 遇到一个过滤全角空格的问题,亟待解决...急啊~~~~
- 用 JAVA(不是 JAVA Script) 如何在指定的位置安排一个按扭(Button)?
- 如何求出1-1000的质素 (不能用除法和求余)
- 下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 给点权威的答案!!!不知道 不要乱说
Employee o1 = (Employee) o;
if(salary > o1.salary) return -1;
if(salary < o1.salary) return 1;
return 0;
ObjTest.java:35: 错误: 已在compareTo(Object)中定义o
Employee o = (Employee) o;
^
1 个错误
P208 第 58 59 行程序错误!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!
大哥 ,你在传参数的时候, 却用object来接收,那是不对的你该把泛型好好看看参数用object接收有问题, 自己 看看泛型 ,个人介意用 Employee 接收…………去看看泛型吧, 很有好处的……
改为Employee oo = (Employee) o;
比较算法直接用salary.compareTo(oo),Double 类自带了比较器。
Employee o1 = (Employee) o; //这个引用 也定义成o不可以哦,系统不能分辨出是参数o还是 Employee o的o ;if(salary > o1.salary) return -1;
if(salary < o1.salary) return 1;
return 0;
}