Write a Java program using Lambda Expression to find the second largest number in a list of integers
The java program that finds the second largest number in a list of integers using Java Streams and Collections. Here's an explanation of the code:
- An ArrayList named numbers is created to store a list of integers.
- System.out.println("Given Numbers : " + numbers); prints the original list of numbers.
- The program uses Java Streams to find the second largest number:
- numbers.stream(): This converts the numbers list into a stream of integers.
- .distinct(): This operation removes duplicate values in the stream.
- .sorted(): This operation sorts the unique values in ascending order.
- .collect(Collectors.toList()): This collects the sorted unique values into a new list, sortedNumbers.
- The program checks the size of the sortedNumbers list using if (sortedNumbers.size() >= 2). If there are at least two unique values in the list, it proceeds to find the second largest number.
- If there are at least two unique values, it retrieves the second largest number by accessing the element at sortedNumbers.size() - 2. This is done with int secondLargest = sortedNumbers.get(sortedNumbers.size() - 2);.
- The program prints the second largest number using System.out.println("Second Largest Number : " + secondLargest);.
- If the sortedNumbers list has fewer than two unique values, it prints "List doesn't have a second largest number."
Source Code
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class SecondLargestNumber
{
public static void main(String[] args)
{
List<Integer> numbers = new ArrayList<>();
numbers.add(15);
numbers.add(30);
numbers.add(10);
numbers.add(25);
numbers.add(20);
System.out.println("Given Numbers : " + numbers);
List<Integer> sortedNumbers = numbers.stream().distinct().sorted().collect(Collectors.toList());
if (sortedNumbers.size() >= 2)
{
int secondLargest = sortedNumbers.get(sortedNumbers.size() - 2);
System.out.println("Second Largest Number : " + secondLargest);
}
else
{
System.out.println("List doesn't have a second largest number.");
}
}
}
Output
Given Numbers : [15, 30, 10, 25, 20]
Second Largest Number : 25