The thenComparingInt(java.util.function.ToIntFunction) method of Comparator Interface in Java returns a lexicographic-order comparator with a function that extracts a int sort key.
Syntax:
default Comparator <T> thenComparingInt(ToIntFunction <T> keyExtractor)
Parameters: This method accepts keyExtractor which is the function used to extract the Int sort key.
Return value: This method returns a lexicographic-order comparator composed of this and then the Int sort key.
Exception: This method throws NullPointerException if the argument is null.
Below programs illustrate thenComparingInt(java.util.function.ToIntFunction) method:
Program 1:
// Java program to demonstrate Comparator // thenComparingInt(ToIntFunction) method import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class GFG { public static void main(String... args) { List<HardwareItems> list = getItems(); System.out.println( "before sort:" ); list.forEach(System.out::println); // Apply sorting and // also apply thenComparingInt() Collections .sort( list, Comparator .comparing(HardwareItems::getName) .thenComparingInt(HardwareItems::getPrice)); System.out.println( "after sort:" ); list.forEach(System.out::println); } private static List<HardwareItems> getItems() { return Arrays.asList( new HardwareItems( "Laptop" , 40000 ), new HardwareItems( "Desktop" , 20000 ), new HardwareItems( "Laptop" , 45500 ), new HardwareItems( "Monitor" , 10000 ), new HardwareItems( "Desktop" , 22000 )); } private static class HardwareItems { private String name; private int price; public HardwareItems(String name, int price) { this .name = name; this .price = price; } public String getName() { return name; } public int getPrice() { return price; } @Override public String toString() { return "HardwareItems [name=" + name + ", price=" + price + "]" ; } } } |
The output printed on console of IDE is shown below.
Output:
You can see in example first sorting is done on name wise and if the name is same then price wise which is int type.
Program 2:
// Java program to demonstrate Comparator // thenComparingInt(ToIntFunction) method import java.util.Arrays; import java.util.Comparator; import java.util.List; public class GFG { public static void main(String... args) { List<Double> list = Arrays.asList( 1.12 , 2.4 , 3.43 , 4.343 , 5.434 ); try { // apply thenComparingInt Comparator.comparing(list::get) .thenComparingInt( null ); } catch (Exception e) { System.out.printf( "Exception:" + e); } } } |
The output printed on console is shown below.
Output: