Java Streams Questions

plitvice, cascade, brown waterfall-5262369.jpg

Introduction

A stream is like a pipeline with start, intermediate, and terminal operations, although it is similar to a Collection, however, there are some differences

  • Stream does not store data
  • Stream does not change the data source
  • Stream is by default lazy

Write 5 Stream Sources

  • Stream.of(“red”, “blue”, “green”, “black”);
  • Stream.generate(Math::random);
  • list.stream()
  • Arrays.stream(array)
  • IntStream.range(1, 3);

Convert a List of Strings(India, Canada, USA) to a List Of Characters

public class FlatMap {

    public static void main(String[] args) {
        List<String> words = Arrays.asList(new String[]{"India", "Canada", "USA"});
        Stream<Stream<Character>> result1 = words.stream().map(w -> characterStream(w));
        result1.forEach(System.out::println);

        Stream<Character> result2 = words.stream().flatMap(w -> characterStream(w));
        result2.forEach(System.out::println);
    }

    public static Stream<Character> characterStream(String s) {
        List<Character> result = new ArrayList<>();
        for (char c : s.toCharArray()) result.add(c);
        return result.stream();
    }
}

Finding the largest Element without using Built In Function from 4,8,24,3,22

    private static void reduce() {
        Optional<Integer> optional = Stream.of(4,8,24,3,22).reduce((i1, i2) -> i1 > i2 ? i1: i2);
        System.out.println(optional.get());
    }

Find the sum of the Words length – India, Canada, USA

    private static void combinerAndAccumulator() {
        Stream<String> strings = Stream.of("India", "Canada", "USA");
        int result = strings.reduce(0, (x , y) -> x + y.length(), (x, y) -> x + y);
        System.out.println(" Total SUM  " + result);
    }

Partition the List of Employees by Salary > x, Employee = id, name, salary

    private static void partitionByDemo() {
        Employee e1 = new Employee(1, "Jones", 1000);
        Employee e2 = new Employee(2, "Smith", 1200);
        Employee e3 = new Employee(3, "Adam", 1000);
        Employee e4 = new Employee(4, "Chris", 1100);
        Employee e5 = new Employee(5, "Dave", 1200);
        List<Employee> employees = Arrays.asList(e1, e2, e3, e4, e5);
        Map<Boolean, List<Employee>> employees1 = employees.stream().collect(Collectors.partitioningBy(x -> x.getSalary() > 1000));
        System.out.println(employees1);
    }

Group a List of Employees by Salary and name -> Employee = id, name, salary

public class Grouping {

    public static void main(String[] args) {
        groupingByDemo();
    }

    private static void groupingByDemo() {

        Employee e1 = new Employee(1, "Jones", 1000);
        Employee e2 = new Employee(2, "Smith", 1200);
        Employee e3 = new Employee(3, "Adam", 1000);
        Employee e4 = new Employee(4, "Chris", 1100);
        Employee e5 = new Employee(5, "Dave", 1200);
        List<Employee> employees = Arrays.asList(e1, e2, e3, e4, e5);

        Map<Integer, List<String>> groupBySalary = employees.stream()
                .collect(Collectors.groupingBy(x -> x.salary, Collectors.mapping(Employee::getName, Collectors.toList() )));
        System.out.println(groupBySalary);
    }
}
error: Content is protected !!
Scroll to Top