Java 8- Find the nth Highest Salary

In this short article, you will learn how to find the nth highest salary of an employee using Java Streams API.

Java 8- Find the nth Highest Salary

Let’s assume you have a list of employees and want to get the names of all employees with the second-highest salary.
package org.websparrow;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public class FindNthSalary {

    public static void main(String[] args) {

        // Test Case 1 : Unique Employee List
        List<Employee> empList = Arrays.asList(
                new Employee(101, "Manish", 5000, "IT"),
                new Employee(109, "Atul", 3000, "HR"),
                new Employee(111, "Santosh", 4400, "IT"),
                new Employee(109, "Rupendra", 3200, "FIN")

        Map.Entry<Integer, List<String>> nthHighestSalary = getNthHighestSalary(empList, 2);
        System.out.println("Test Case 1: " + nthHighestSalary);

        // Test Case 2 : Duplicate Employee List
        List<Employee> empList2 = Arrays.asList(
                new Employee(11, "Sagar", 4400, "SALES"),
                new Employee(101, "Manish", 5000, "IT"),
                new Employee(109, "Atul", 3000, "HR"),
                new Employee(166, "Santosh", 4400, "IT"),
                new Employee(109, "Rupendra", 3200, "FIN"),
                new Employee(411, "Priyanka", 4400, "ADMIN")

        Map.Entry<Integer, List<String>> nthHighestSalary2 = getNthHighestSalary(empList2, 3);
        System.out.println("Test Case 2: " + nthHighestSalary2);

    private static Map.Entry<Integer, List<String>> getNthHighestSalary(List<Employee> empList, int nth) {

        if (empList.isEmpty() || nth <= 0 || empList.size() < nth)
            throw new IllegalArgumentException("Please validate your inputs.");

                .collect(Collectors.groupingBy(Employee::getSalary, Collectors.mapping(Employee::getName, Collectors.toList())
                .get(nth - 1);


Test Case 1: 4400=[Santosh]
Test Case 2: 4400=[Sagar, Santosh, Priyanka]


  1. How to sort list in Java 8
  2. Java 8- Find the Average of List of Integers

Similar Posts

About the Author

Atul Rai
I love sharing my experiments and ideas with everyone by writing articles on the latest technological trends. Read all published posts by Atul Rai.