This default method returns a comparator chained with this comparator. The returned comparator uses the specified function to extract the Comparable double sort key.
package com.logicbig.example.comparator;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ThenComparingDoubleExample {
public static void main(String... args) {
List<Record> list = createExampleRecords();
System.out.printf("before sort: %s%n", list);
Collections.sort(list, Comparator.comparing(Record::getDesc)
.thenComparingLong(Record::getId));
System.out.printf("after sort: %s%n", list);
}
private static List<Record> createExampleRecords() {
return Arrays.asList(
new Record(42000, "record 1"),
new Record(21000, "record 2"),
new Record(31000, "record 2"),
new Record(39000, "record 3"),
new Record(41000, "record 1")
);
}
private static class Record {
private long id;
private String desc;
public Record(long id, String desc) {
this.id = id;
this.desc = desc;
}
public long getId() {
return id;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return desc + " - " + id;
}
}
}
Output
before sort: [record 1 - 42000, record 2 - 21000, record 2 - 31000, record 3 - 39000, record 1 - 41000]
after sort: [record 1 - 41000, record 1 - 42000, record 2 - 21000, record 2 - 31000, record 3 - 39000]