1. Find the Frequency of each element in list using java 8 stream API

Java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;


public class Java8Solution {
    public static void main(String[] args) {
        {
            List<String> stringWord = Arrays.asList("cat", "dog", "mouse", "fox", "horse", "cat", "horse", "cat", "cat", "dog");

            Map<String, Long> charCountMap =
                    stringWord.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

            System.out.println(charCountMap);

        }
    }

}
Output:

{horse=2, mouse=1, cat=4, dog=2, fox=1}

2 Find Three maximum and Three Minimum Elements using java 8 stream API

Java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

    public class Java8Solution {

        public static void main(String[] args)
        {
            List<Integer> list = Arrays.asList(45, 12, 56, 15, 24, 75, 31, 89);

            //3 minimum Numbers

            System.out.println("-----------------");

            System.out.println("Minimum 3 Numbers are :");

            System.out.println("-----------------");

            list.stream().sorted().limit(3).forEach(System.out::println);

            //3 Maximum Numbers

            System.out.println("-----------------");

            System.out.println("Maximum 3 Numbers are :");

            System.out.println("-----------------");

            list.stream().sorted(Comparator.reverseOrder()).limit(3).forEach(System.out::println);
        }
    }
Output:

Minimum 3 Numbers are :
-----------------
12
15
24
-----------------
Maximum 3 Numbers are :
-----------------
89
75
56

3. Find the common elements in two list using java 8

Java
import java.util.Arrays;
import java.util.List;

public class Java8Solution {

    public static void main(String[] args) {
        List<Integer> list1 = Arrays.asList(45, 66, 34, 23, 53, 89);

        List<Integer> list2 = Arrays.asList(41, 56, 34, 21, 23, 66);

        list1.stream().filter(list2::contains).forEach(System.out::println);
    }

}

Output:
66
34
23

4.Reverse each word of a string using Java 8 streams?

Java

import java.util.Arrays;
import java.util.stream.Collectors;

public class Java8Solution {
    public static void main(String[] args) {
        String sentence = "Java is awesome";

        String reversedSentence = Arrays.stream(sentence.split(" "))
                .map(word -> new StringBuilder(word).reverse())
                .collect(Collectors.joining(" "));

        System.out.println(reversedSentence);
        // Expected output: avaJ si emosewa
    }

}
Output:

avaJ si emosewa

5.Find the most repeated element in an array using java 8 stream API

Java
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Java8Solution {
    public static void main(String[] args) {
        Integer[] nums = {1, 2, 2, 3, 4, 2, 5, 2, 6, 2};
        String[] words = {"apple", "banana", "apple", "orange", "banana", "apple"};
        
        //one way 

        System.out.println("Most repeated number: " + findMostRepeated(nums));
        System.out.println("Most repeated word: " + findMostRepeated(words));
          
           //Another Way

        Map<String, Long> elementCountMap = Arrays.asList(words).stream()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        Map.Entry<String, Long> mostFrequentElement = elementCountMap.entrySet().stream().max(Map.Entry.comparingByValue()).get();

        System.out.println("Most Repeated Element : " + mostFrequentElement.getKey());
    }

    public static <T> T findMostRepeated(T[] array) {
        return Arrays.stream(array)
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                .entrySet()
                .stream()
                .max(java.util.Map.Entry.comparingByValue())
                .map(java.util.Map.Entry::getKey)
                .orElse(null);
    }


}
Output:
Most repeated number: 2
Most repeated word: apple
Most Repeated Element : apple

6. Find if a string is palindrome using java 8

Java
import java.util.stream.IntStream;

public class Java8Solution {
    public static void main(String[] args) {

        String word1 = "palindrome";
        String word2 = "malayalam";

        System.out.println(isPalindrome(word1));
        System.out.println(isPalindrome(word2));
    }

    public static boolean isPalindrome(String str) {
        return IntStream.range(0, str.length() / 2)
                .allMatch(i -> str.charAt(i) == str.charAt(str.length() - 1 - i));
    }


}
Output:

false
true

7.Find the second largest Number in a List of integers using Java 8 stream API

Java
import java.util.Arrays;
import java.util.Collections;

public class Java8Solution {

    public static void main(String[] args) {
        int[] numbers = {10, 5, 20, 15, 20, 30};
        try {
            int secondLargest = findSecondLargest(numbers);
            System.out.println("The second largest number is: " + secondLargest);
        } catch (IllegalArgumentException e) {
            System.out.println(e.getMessage());
        }
    }

    public static int findSecondLargest(int[] array) {
        return Arrays.stream(array)
                .distinct()
                .boxed()
                .sorted(Collections.reverseOrder())
                .skip(1)
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Array must contain at least two distinct elements."));
    }
}
Output:

The second largest number is: 20

8. Given a list of strings, sort them according to increasing order of their length java 8 Stream API

Java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class Java8Solution {

    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("Apple", "Banana", "Kiwi", "Grapefruit", "Orange");

        fruits.stream().sorted(Comparator.comparing(String::length)).forEach(System.out::println);


    }

}
Output:

Kiwi
Apple
Banana
Orange
Grapefruit

9. Find the average of elements in list using Java 8 stream API

Java
mport java.util.Arrays;
import java.util.List;

public class Java8Solution {
    public static void main(String[] args) {

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

        double average = numbers.stream()
                .mapToDouble(Integer::doubleValue)
                .average()
                .orElse(0.0); // Handles the case of an empty stream


        System.out.println("The average of the elements is: " + average);
    }

}
Output:

The average of the elements is: 5.5

10.Print first 10 even numbers using java 8

Java
import java.util.stream.IntStream;

public class Java8Solution {

    // Print first 10 even numbers
    public static void main(String[] args) {
        IntStream.rangeClosed(1, 10).map(i -> i * 2).forEach(System.out::println);
    }

}
Output:
2
4
6
8
10
12
14
16
18
20