为了方便employee对象的引用,定义了一个employee类:
package week06;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.WritableComparable;
/*
* Employee Object
*/
public class Employee implements WritableComparable<Employee> {
private String empno;
private String ename;
private String job;
private String mgr;
private String hiredate;
private int sal;
private int comm;
private String deptno;
private String dname;
private String loc;
private boolean valid = true;
public void set(Employee emp) {
this.valid = emp.isValid();
this.empno = emp.getEmpno();
this.ename = emp.getEname();
this.job = emp.getJob();
this.mgr = emp.getMgr();
this.hiredate = emp.getHiredate();
this.sal = emp.getSal();
this.comm = emp.getComm();
this.deptno = emp.getDeptno();
this.dname = emp.getDname();
this.loc = emp.getLoc();
}
//Emp_Test8使用这个compareTo方法
// public int compareTo(Employee bean) {
// if (this.sal >= bean.getSal()) {
// return -1;
// } else {
// return 1;
// }
// }
//Emp_Test9使用这个compareTo方法
public int compareTo(Employee bean) {
int total = this.sal + this.comm;
int bean_total = bean.getSal() + bean.getComm();
if (total >= bean_total) {
return -1;
} else {
return 1;
}
}
public void write(DataOutput out) throws IOException {
out.writeUTF(empno);
out.writeUTF(ename);
out.writeUTF(job);
out.writeUTF(mgr);
out.writeUTF(hiredate);
out.writeInt(sal);
out.writeInt(comm);
out.writeUTF(deptno);
out.writeUTF(dname);
out.writeUTF(loc);
out.writeBoolean(valid);
}
// 注意必须和write方法中的写入顺序和类型保持一致,否则会出错。
public void readFields(DataInput in) throws IOException {
this.empno = in.readUTF();
this.ename = in.readUTF();
this.job = in.readUTF();
this.mgr = in.readUTF();
this.hiredate = in.readUTF();
this.sal = in.readInt();
this.comm = in.readInt();