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]