Write a Java program using Lambda Expression to find the prime numbers in a list of integers


The java program that finds prime numbers in a list of integers using a lambda expression and a custom functional interface Predicate. Here's an explanation of the code:

  • The PrimeNumberFinder class is defined, which contains the main method and another method named filterPrimeNumbers.
  • Inside the main method:
    • A list of integers named numbers is created using an ArrayList, and several integers are added to it.
    • System.out.println("List of Numbers : " + numbers); prints the original list of numbers.
    • List<Integer> primeNumbers = filterPrimeNumbers(numbers); calls the filterPrimeNumbers method, passing the numbers list as an argument. The method returns a list of prime numbers.
    • System.out.println("Prime Numbers : " + primeNumbers); prints the list of prime numbers.
  • The filterPrimeNumbers method is defined with the following functionality:
    • A Predicate named isPrime is created using a lambda expression. This isPrime predicate checks if a given number is prime or not.
    • Inside the method, a new list named primeNumbers is created to store the prime numbers.
    • The method iterates through each number in the input list using a for-each loop. For each number, it applies the isPrime predicate to determine if it's a prime number and, if so, adds it to the primeNumbers list.
    • Finally, the primeNumbers list containing the prime numbers is returned.
  • The Predicate<Integer> functional interface is used to define the isPrime lambda expression. The lambda expression checks if a given integer is prime by testing divisibility with numbers from 2 to the square root of the number. If the number is divisible by any of these numbers, it's not prime.

Source Code

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
 
public class PrimeNumberFinder
{
	public static void main(String[] args)
	{
		// Create a list of integers
		List<Integer> numbers = new ArrayList<>();
		numbers.add(10);
		numbers.add(7);
		numbers.add(23);
		numbers.add(107);
		numbers.add(15);
		numbers.add(57);
 
		// Find the prime numbers using a lambda expression
		List<Integer> primeNumbers = filterPrimeNumbers(numbers);
 
		// Print the list of numbers and the prime numbers
		System.out.println("List of Numbers : " + numbers);
		System.out.println("Prime Numbers : " + primeNumbers);
	}
 
	public static List<Integer> filterPrimeNumbers(List<Integer> numbers)
	{
		Predicate<Integer> isPrime = number -> {
			if (number <= 1)
			{
				return false;
			}
			for (int i = 2; i <= Math.sqrt(number); i++)
			{
				if (number % i == 0)
				{
					return false;
				}
			}
			return true;
		};
 
		List<Integer> primeNumbers = new ArrayList<>();
		for (int number : numbers)
		{
			if (isPrime.test(number))
			{
				primeNumbers.add(number);
			}
		}
		return primeNumbers;
	}
}

Output

List of Numbers : [10, 7, 23, 107, 15, 57]
Prime Numbers : [7, 23, 107]

Example Programs