Thursday, 23 May 2024

Top Java8 interview Questions and answers

 Questions:

1) Given a list of integers, separate odd and even numbers?

2) How do you remove duplicate elements from a list using Java 8 streams?

3) How do you find frequency of each character in a string using Java 8 streams?

4) How do you find frequency of each element in an array or a list?

5) How do you sort the given list of decimals in reverse order?

6) Given a list of strings, join the strings with ‘[‘ as prefix, ‘]’ as suffix and ‘,’ as delimiter?

7) From the given list of integers, print the numbers which are multiples of 5?

8) Given a list of integers, find maximum and minimum of those numbers?

9) How do you merge two unsorted arrays into single sorted array using Java 8 streams?

10) How do you merge two unsorted arrays into single sorted array without duplicates?

11) How do you get three maximum numbers and three minimum numbers from the given list of integers?

12) Java 8 program to check if two strings are anagrams or not?

13) Find sum of all digits of a number in Java 8?

14) Find second largest number in an integer array?

15) Given a list of strings, sort them according to increasing order of their length?

16) Given an integer array, find sum and average of all elements?

17) How do you find common elements between two arrays?

18) Reverse each word of a string using Java 8 streams?

19) How do you find sum of first 10 natural numbers?

20) Reverse an integer array

21) Print first 10 even numbers

Answers:

 public static void main(String[] args) {

OddEvenSeparate();

removeDuplicates();

freqOfCharInString();

freqOfCharInList();

decimalsInreverseOrder();

joinStrings();

multiplesOfFive();

findMinMaxInList();

sortedList();

distinctSortedList();

sortedArray();

threeMaxAndMinNumbersFromList();

anagram();

sumIndividualNumbersOfNumber();

secondLargestNumberInIntArray();

sortStringArrayBasedOnSize();

sumAndAverageOfAnArray();

commonElementBetTwoArrays();

reverseWordsInAGivenString();

sumOfNaturalNumbers(10);

reverseIntegerArray();

firstNevenNumbers(10);


}

        public static void OddEvenSeparate() {

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

/*list.stream().filter(i->i%2==0).forEach(System.out::print);

list.stream().filter(i->i%2!=0).forEach(System.out::print);*/

List<Integer> evenNumbers = list.stream().filter(i->i%2==0).collect(Collectors.toList());

System.out.println("evenNumbers are : "+evenNumbers);

List<Integer> oddNumbers = list.stream().filter(i->i%2!=0).collect(Collectors.toList());

System.out.println("oddNumbers are : "+oddNumbers);

}

public static void removeDuplicates() {

List<Integer> list = Arrays.asList(1,2,2,3,3,4,5,6,7,4,5,6,7,8,9,10);

List<Integer> distinctNumbers = list.stream().distinct().collect(Collectors.toList());

System.out.println("distinctNumbers are : "+distinctNumbers);

}

public static void freqOfCharInString() {

String str = "BAGAVATHAM";

Map<Character, Long> charCountMap = str.chars().mapToObj(c ->(char)c)

.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

    System.out.println(charCountMap);

}

public static void freqOfCharInList() {

List<Integer> list = Arrays.asList(1,2,2,3,3,4,5,6,7,4,5,6,7,8,9,10);

Map<Integer, Long> intCountMap = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

    System.out.println(intCountMap);

}

public static void decimalsInreverseOrder() {

List<Double> decimalList = Arrays.asList(12.45, 23.58, 17.13, 42.89, 33.78, 71.85, 56.98, 21.12);

List<Double> decilist = decimalList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());

System.out.println("list of decimal numbers in reverse order : "+decilist);

}

public static void joinStrings() {

List<String> listOfStrings = Arrays.asList("Facebook", "Twitter", "YouTube", "WhatsApp", "LinkedIn");

        String joinedString = listOfStrings.stream().collect(Collectors.joining(", " , "[", "]"));

        System.out.println(joinedString);

        

}

public static void multiplesOfFive() {

List<Integer> listOfIntegers = Arrays.asList(45, 12, 56, 15, 24, 75, 31, 89);

List<Integer> mFive = listOfIntegers.stream().filter(i -> i % 5 == 0).collect(Collectors.toList());

System.out.println("multiples of Five : "+mFive);

}

public static void findMinMaxInList() {

List<Integer> listOfIntegers = Arrays.asList(45, 12, 56, 15, 24, 75, 31, 89);

/*Integer maxNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9).max(Comparator.comparing(Integer::valueOf)).get();

Integer minNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9).min(Comparator.comparing(Integer::valueOf)).get();*/

Integer maxNumber =  listOfIntegers.stream().max(Comparator.comparing(Integer::valueOf)).get();

Integer minNumber =  listOfIntegers.stream().min(Comparator.comparing(Integer::valueOf)).get();

System.out.println("Max Number is : "+maxNumber + " & Min Number is : "+minNumber);

}


public static void sortedList() {

List<Integer> unsortList1 = Arrays.asList(45, 12, 56, 15, 24, 75, 31, 89);

List<Integer> unsortList2 = Arrays.asList(5, 2, 1, 4, 7, 3, 8, 9);

List<Integer> sortedList1 = Stream.concat(unsortList1.stream(), unsortList2.stream()).sorted().collect(Collectors.toList());

System.out.println(sortedList1);

}

public static void distinctSortedList() {

List<Integer> unsortList1 = Arrays.asList(45, 45, 12, 12, 56, 15, 24, 75, 31, 89);

List<Integer> unsortList2 = Arrays.asList(5, 2, 2, 1, 4, 4, 7, 3, 8, 8, 9);

List<Integer> sortedList1 = Stream.concat(unsortList1.stream(), unsortList2.stream()).sorted().distinct().collect(Collectors.toList());

System.out.println(sortedList1);

}

public static void sortedArray() {

int[] unsortArray1 = {45, 45, 12, 12, 56, 15, 24, 75, 31, 89};

int[] unsortArray2 = {5, 2, 2, 1, 4, 4, 7, 3, 8, 8, 9};

int[] sortedArray = Stream.of(unsortArray1, unsortArray2).flatMapToInt(Arrays::stream).sorted().distinct().toArray();

for(int num:sortedArray)

{

System.out.print(num); System.out.print(",");

}

}

public static void threeMaxAndMinNumbersFromList() {

List<Integer> list = Arrays.asList(5, 2, 12, 1, 4, 14, 7, 3, 8, 18, 9);

List<Integer> listMin3 = list.stream().sorted().limit(3).collect(Collectors.toList());

List<Integer> listMax3 = list.stream().sorted(Collections.reverseOrder()).limit(3).collect(Collectors.toList());

System.out.println(listMin3);

System.out.println(listMax3);

}

public static void anagram() {

String str1 = "saras"; String str2 = "asrsa";

if(str1.length() == str2.length()) {

char[] ch1 = str1.toCharArray();

char[] ch2 = str2.toCharArray();

Arrays.sort(ch1);

    Arrays.sort(ch2);

    

    boolean result = Arrays.equals(ch1, ch2);

    

    if(result) System.out.println(str1 + " and " + str2 + " are anagram.");

    else System.out.println(str1 + " and " + str2 + " are not anagram.");

    

}

else {

System.out.println("two strings are not Anagram");

}

}

private static void sumIndividualNumbersOfNumber() {

int i = 234523287;

int sum = String.valueOf(i).chars().map(Character::getNumericValue).sum();

System.out.println("The sum of the digits is: " + sum);

}

private static void secondLargestNumberInIntArray() {

Integer[] i = {1,2,3,4,5,6,7,8,9};

Integer sln = Arrays.asList(i).stream().sorted(Comparator.reverseOrder()).skip(1).findFirst().get();

System.out.println("second largest number in the given array is : "+sln);

}

private static void sortStringArrayBasedOnSize() {

String[] arr = {"praveen","sathish","chaki","minnu","junnu","sahasra"};

// Sorting the ArrayList based on string length using Collections.sort()

        Collections.sort(Arrays.asList(arr), Comparator.comparingInt(String::length));

        System.out.println(Arrays.asList(arr));

      

     }

private static void sumAndAverageOfAnArray() {

int[] arr = {1,2,4,5,7,8,90,34,6,7,8,84,56,67,78};

int sum = IntStream.of(arr).sum();

int avg = sum/arr.length;

        System.out.println("sum is :"+sum+" average is : "+avg);

      

     }

private static void commonElementBetTwoArrays() {

Integer[] arr1 = {1,2,4,5,7,8,90,34,6,7,8,84,56,67,78};

Integer[] arr2 = {3,2,9,5,0,8,34,16,17,18,84,46,57,78};

// create hashsets

        Set<Integer> set1 = new HashSet<>();

        Set<Integer> set2 = new HashSet<>();

        

// Adding elements from array1

        for (int i : arr1) { set1.add(i); }

 

        // Adding elements from array2

        for (int i : arr2) { set2.add(i); }

 

        // use retainAll() method to

        // find common elements

        set1.retainAll(set2);

        System.out.println("Common elements : " + set1);

      

     }

private static void reverseWordsInAGivenString() {

String input = "I work at cognizant";

// Splitting the input string into words and processing each word with a stream

        String result = Arrays.stream(input.split(" "))

                              .map(word -> new StringBuilder(word).reverse().toString()) // Reversing each word

                              .collect(Collectors.joining(" ")); // Joining the reversed words back into a string


        // Displaying the result

        System.out.println("Original string: " + input);

        System.out.println("Reversed words: " + result);

}

private static void sumOfNaturalNumbers(int n) {

System.out.println("Sum of N Natural Numbers is : "+n*(n+1)/2);

}

private static void reverseIntegerArray() {

Integer[] intArray = {1,2,3,4,5,6,7,8,9};

List<Integer> list = Arrays.asList(intArray);

Collections.reverse(list);

System.out.println(list);

}

private static void firstNevenNumbers(int n) {

for(int i=1;i<=n;i++) {

if(i%2==0) { 

System.out.print(i); 

if(i<n){ 

System.out.print(",");

}

}

}

}