WritableComparable (Apache Hadoop Common 3.5.0 API)
Description: declaration: package: org.apache.hadoop.io, interface: WritableComparable

Package org.apache.hadoop.io

# Interface WritableComparable<T>

All Superinterfaces:
  `Comparable<T>`, `Writable`

All Known Implementing Classes:
  `BooleanWritable`, `BytesWritable`, `ByteWritable`, `DoubleWritable`, `FloatWritable`, `IntWritable`, `Key`, `LongWritable`, `MD5Hash`, `NullWritable`, `ShortWritable`, `Text`, `UTF8`, `VIntWritable`, `VLongWritable`

@Public @Stable public interface WritableComparable<T> extends Writable, Comparable<T>
A `Writable` which is also `Comparable`.

`WritableComparable`s can be compared to each other, typically via `Comparator`s. Any type which is to be used as a `key` in the Hadoop Map-Reduce framework should implement this interface.

Note that `hashCode()` is frequently used in Hadoop to partition keys. It's important that your implementation of hashCode() returns the same result across different instances of the JVM. Note also that the default `hashCode()` implementation in `Object` does not satisfy this property.

Example:

>          public class MyWritableComparable implements
>           WritableComparable<MyWritableComparable> {
>            // Some data
>            private int counter;
>            private long timestamp;

>            public void write(DataOutput out) throws IOException {
>              out.writeInt(counter);
>              out.writeLong(timestamp);
>            }

>            public void readFields(DataInput in) throws IOException {
>              counter = in.readInt();
>              timestamp = in.readLong();
>            }

>            public int compareTo(MyWritableComparable o) {
>              int thisValue = this.value;
>              int thatValue = o.value;
>              return (thisValue < thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
>            }

>            public int hashCode() {
>              final int prime = 31;
>              int result = 1;
>              result = prime * result + counter;
>              result = prime * result + (int) (timestamp ^ (timestamp >>> 32));
>              return result
>            }
>          }

- ## Method Summary

  ### Methods inherited from interface java.lang.Comparable

  `compareTo`

  ### Methods inherited from interface org.apache.hadoop.io.Writable

  `readFields, write`