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

Example Programs