This default method returns a comparator chained with this comparator. The returned comparator uses the specified function to extract the Comparable long 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 ThenComparingLongExample {
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, "record3"),
new Record(21000, "record1"),
new Record(39000, "record2"),
new Record(10000, "record1"),
new Record(30000, "record3")
);
}
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: [record3 - 42000, record1 - 21000, record2 - 39000, record1 - 10000, record3 - 30000]
after sort: [record1 - 10000, record1 - 21000, record2 - 39000, record3 - 30000, record3 - 42000]