Find Perfect Number Using Java 8 Stream API | Interview Coding Question

 Hi All,

Today I have released new video on "Find Perfect Number Using Java 8 Stream API | Interview Coding Question"

This is frequently asked question in Java Interview.

Please watch full video, share, like and Subscribe Youtube channel and press bell icon. So you will get latest video notification.



 Please click on below Image to view full explanation on below Youtube video.

 Find Perfect Number Using Java 8 Stream API | Interview Coding Question




 package org.practice.basicprgms;


import java.util.List;

import java.util.function.Predicate;

import java.util.stream.Collectors;

import java.util.stream.IntStream;


public class FindPerfectNumber {


public static void main(String[] args) {

int sum = 0;

int number = 28;

System.out.println("----------1. Using IntStream.rangeClosed() ---------------");

sum = IntStream.rangeClosed(1, number/2)

.filter(i -> number % i == 0)

.sum();

System.out.println(sum == number ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------2. Using range() Instead of rangeClosed()---------");

sum = IntStream.range(1, number)

.filter(i -> number % i == 0)

.sum();

System.out.println(sum == number ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------3. Using collection list and mapToInt---------");

List<Integer> divisors =

IntStream.rangeClosed(1, number/2)

.filter(i -> number % i == 0)

.boxed()

.collect(Collectors.toList());

sum = divisors.stream()

.mapToInt(Integer::intValue)

.sum();

System.out.println(sum == number ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------4. Using reduce() method---------");

sum = IntStream.rangeClosed(1, number/2)

.filter(i -> number % i == 0)

.reduce(0, Integer::sum);

System.out.println(sum == number ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------5. Using One-Line Stream Solution---------");

boolean perfect =

IntStream.rangeClosed(1, number/2)

.filter(i -> number % i == 0)

.sum() == number;

System.out.println(perfect ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------6. Using map() method---------");

sum = IntStream.rangeClosed(1, number/2)

.filter(i -> number % i == 0)

.map(i -> i)

.sum();

System.out.println(perfect ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------7. Using Predicate Function---------");

Predicate<Integer> divisorPred = i -> number % i == 0;

sum = IntStream.rangeClosed(1, number/2)

.filter(divisorPred :: test)

.sum();

System.out.println(perfect ? "Perfect Number" : "Not Perfect Number");

System.out.println("----------8. Using peek() method for Debugging purpose---------");

sum = IntStream.rangeClosed( 1, number/2)

.filter(i -> number % i == 0)

.peek(i -> System.out.println(i))

.sum();

System.out.println(perfect ? "Perfect Number" : "Not Perfect Number");

}


}


output:

----------1. Using IntStream.rangeClosed() ---------------

Perfect Number

----------2. Using range() Instead of rangeClosed()---------

Perfect Number

----------3. Using collection list and mapToInt---------

Perfect Number

----------4. Using reduce() method---------

Perfect Number

----------5. Using One-Line Stream Solution---------

Perfect Number

----------6. Using map() method---------

Perfect Number

----------7. Using Predicate Function---------

Perfect Number

----------8. Using peek() method for Debugging purpose---------

1

2

4

7

14

Perfect Number


Post a Comment

0 Comments