org.apache.hadoop.io

## Interface WritableComparable<T>

- All Superinterfaces:
    Comparable<T>, Writable
  All Known Implementing Classes:
    BooleanWritable, BytesWritable, ByteWritable, DoubleWritable, FloatWritable, ID, ID, IntWritable, JobID, JobID, LongWritable, MD5Hash, NullWritable, Record, ShortWritable, TaskAttemptID, TaskAttemptID, TaskID, TaskID, Text, VIntWritable, VLongWritable

      @InterfaceAudience.Public
       @InterfaceStability.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 {
  >            // 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 org.apache.hadoop.io.Writable

      `readFields, write`

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

      `compareTo`

Copyright © 2022 Apache Software Foundation. All rights reserved.