To find the second-highest salary from a list of employees using Java 8 streams, you can follow these steps:
- Create a list of employees with their salaries.
- Use Java 8 streams to sort the employees by salary in descending order.
- Skip the first element (which is the employee with the highest salary).
- Get the first element of the remaining stream (which is the employee with the second-highest salary).
Example code:
javaimport java.util.ArrayList;
import java.util.List;
class Employee {
private String name;
private double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
public double getSalary() {
return salary;
}
}
public class SecondHighestSalary {
public static void main(String[] args) {
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("John", 60000.0));
employees.add(new Employee("Jane", 75000.0));
employees.add(new Employee("Bob", 55000.0));
employees.add(new Employee("Alice", 80000.0));
// Use Java 8 streams to find the second-highest salary
double secondHighestSalary = employees.stream()
.sorted((e1, e2) -> Double.compare(e2.getSalary(), e1.getSalary()))
.skip(1)
.findFirst()
.map(Employee::getSalary)
.orElse(0.0);
System.out.println("Second-highest salary: " + secondHighestSalary);
}
}
Sample Output:
outputSecond-highest salary: 75000.0
In this code, we create a list of employees, sort them by salary in descending order, skip the first element (which has the highest salary), and then retrieve the second element using findFirst
. Finally, we extract the salary from the employee and print the second-highest salary, which is 75000.0 in this example.
Comments
Post a Comment