This class is a lexicoder that sorts a ComparablePair. Each item in the pair is encoded with the
given lexicoder and concatenated together. This makes it easy to construct a sortable key based
on two components. There are many examples of this- but a key/value relationship is a great one.
If we decided we wanted a two-component key where the first component is a string and the second
component a date which is reverse sorted, we can do so with the following example:
StringLexicoder strEncoder = new StringLexicoder();
ReverseLexicoder<Date> dateEnc = new ReverseLexicoder<>(new DateLexicoder());
PairLexicoder<String,Date> pair = new PairLexicoder<>(strEncoder, dateEnc);
long now = System.currentTimeMillis();
byte[] pair1 = pair.encode(new ComparablePair<>("com", new Date(now)));
byte[] pair2 = pair.encode(new ComparablePair<>("com", new Date(now + 500)));
byte[] pair3 = pair.encode(new ComparablePair<>("org", new Date(now + 1000)));
In the example, pair2 will be sorted before pair1. pair3 will occur last since 'org' is sorted
after 'com'. If we just used a
DateLexicoder instead of a
ReverseLexicoder, pair1
would have been sorted before pair2.