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: