编写自己的Writeable类

来源:互联网 发布:gta5淘宝怎么搜 编辑:程序博客网 时间:2024/05/29 19:34
import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import java.util.Set;import org.apache.hadoop.io.Text;import org.apache.hadoop.io.WritableComparable;/* * Haoop提供的Writable类型不能满足需求,编写自己的Writable * 类需要实现WritableComparable接口 */public class TextPair implements WritableComparable<TextPair> {    private Text first;    private Text second;    public TextPair() {        set(new Text(),new Text());    }    public TextPair(String first,String second){        set(new Text(first),new Text(second));    }    public TextPair(Text first,Text second){        set(first,second);    }    private void set(Text first, Text second) {        this.first=first;        this.second=second;    }    @Override    public void readFields(DataInput in) throws IOException {        first.readFields(in);        second.readFields(in);    }    @Override    public void write(DataOutput out) throws IOException {        first.write(out);        second.write(out);    }    @Override    public int compareTo(TextPair tp) {        int cmp=first.compareTo(tp.first);        if(cmp!=0){            return cmp;        }        return second.compareTo(tp.second);    }    @Override    public int hashCode() {        return first.hashCode()*163+second.hashCode();    }    @Override    public boolean equals(Object obj) {        if(obj instanceof TextPair){            TextPair tp=(TextPair)obj;            return first.equals(tp.first)&&second.equals(tp.second);        }        return false;    }    @Override    public String toString() {        return first+"\t"+second;    }}
0 0