Serving Industries Worldwide

Innovative Ways - Satisfied Clientele

A Guide on Java Stream API


Listening is fun too.

Straighten your back and cherish with coffee - PLAY !

 
 

A-Guide-on-Java-Stream-API

Table of Content

What is Java Stream API?

Java Stream API was added as a new feature in Java 8 – java.util.stream – which contains classes for processing sequences of elements. This package consists of classes, interfaces, and enum to allow functional-style operations on the elements. Simply by importing java.util.stream package in your file, you can make use of Stream.

A stream provides a set/collection of elements of a particular type in a sequential manner. A stream gets/computes elements on demand. It never stores the elements.

A stream is not a data structure, it just takes Collections, Arrays, or I/O resources as an input source. Stream supports aggregate operations namely filter, map, limit, reduce, find, match, and many more to use. Stream operations do the iterations internally over the source elements provided.

Streams don’t change the data structure which is officially there but only provide the result as per the predefined/ inbuilt methods.

Each intermediate operation is executed and returns a stream as a result, hence various intermediate operations can be pipelined.

Different Methods for Streams


Intermediate methods

map:The map method is used to returns a stream consisting of the results of applying the given function to the elements of this stream.

Example:
List no = Arrays.asList(2,3,4,5);
List square_no = number.stream().
map(x->x*x).collect(Collectors.toList());

     
List uris = new ArrayList<>();
       uris.add("C:\\My.txt"); 
Stream stream = uris.stream().map(uri -> Paths.get(uri));


filter: The filter method is used to select elements as per the implied argument. So we can get our desired output only.

Example:
List names = Arrays.asList("yash","sarthak","amit");
List result = names.stream().
filter(s->s.startsWith("s")).collect(Collectors.toList());


ArrayList list = new ArrayList<>();
 list.add("Monday");
list.add("Tuesday");
 list.add("Wednesday");
 list.add("Change");
 list.add("factory");
 list.add("Tomorrow");
 list.add("Italy"); 
list.add("Yesterday");
 list.add("Thursday");

Stream stream = list.stream().filter(element -> element.contains("d"));

sorted: The sorted method is definitely used for the sorting of the stream.

Example:
List names = Arrays.asList("Reflection","Collection","Stream");
List result = names.stream().sorted().collect(Collectors.toList());



Terminal methods

collect: The collect method is used to return the result of the intermediate operations performed on the stream.

Example:
List number = Arrays.asList(2,3,4,5,3);
Set square = number.stream().map(x->x*x).collect(Collectors.toSet());

forEach: The forEach method is used to iterate through an element that all are inside the stream.

Example:
List number = Arrays.asList(2,3,4,5);
number.stream().map(x->x*x).forEach(y->System.out.println(y));

reduce: Stream API allows reducing a sequence of elements to some value according to a specified function with the help of the reduce () method of the type Stream. This method takes two parameters: first – start value, second – an accumulator function. This method takes a Binary Operator as a parameter.

Example:
List number = Arrays.asList(2,3,4,5);
int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);

List integers = Arrays.asList(3, 1, 2); Integer reduced = integers.stream().reduce(13, (a, b) -> a - b);

Match: Stream API gives a very useful and important set of instruments to validate elements of a sequence according to some predicate in the argument. To do this, one of the following methods can be used: anyMatch(), allMatch(), noneMatch(). We can understand their uses by their names.

Example:
boolean isValid = list.stream().anyMatch(element -> element.contains("s"));  
// if there is ‘s’ then will show true or else false.
boolean isValidOne = list.stream().allMatch(element -> element.contains("t")); 
// if all elements have ‘t’ then true or else false.
boolean isValidTwo = list.stream().noneMatch(element -> element.contains("a"));
// if none of the element has ‘a’ then true or else false.

Extra Examples:

For a simple condition comparison
import java.util.*;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the productlist 
        productsList.add(new Product(1," redmi note 10",25000f ));  
        productsList.add(new Product(2," asus roug",30000f));  
        productsList.add(new Product(3," samsung note 10 lite ",28000f ));  
        productsList.add(new Product(4, “ Sony Experia 3",28000f));  
        productsList.add(new Product(5," Apple iphone 12 pro max ",90000f ));  
        List productPriceList = new ArrayList();  
        for(Product product: productsList){  
  
            if(product.price<30000){  
                productPriceList.add(product.price);     
            }  
        }  
        System.out.println(productPriceList);   // display data  
    }  
}  

Output

codeoutput1

For iteration
import java.util.stream.*;  
public class JavaStreamExample {  
    public static void main(String[] args){  
        Stream.iterate(1, element->element+1)  
        .filter(element -> element%5==0)  
        .limit(5)  
        .forEach(System.out::println);  
    }  
}  

Output

codeoutput2

To find sum
import java.util.*;  
import java.util.stream.Collectors;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products  in the list
        productsList.add(new Product(1," HP spector x360 Laptop",25000f ));  
        productsList.add(new Product(2," Dell inspiron Laptop",30000f ));  
        productsList.add(new Product(3," Lenovo legion Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f));  
        productsList.add(new Product(5," Apple mac book pro Laptop",90000f ));  
        // Using Collectors's method to sum the prices.  
        double totalPrice3 = productsList.stream()  
                        .collect(Collectors.summingDouble(product -> product.price ));  
        System.out.println(totalPrice3);  
          
    }  
}  

Output

codeoutput3

For count() method
import java.util.*;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the list
        productsList.add(new Product(1," HP Laptop",25000f ));  
        productsList.add(new Product(2," Dell xps Laptop",30000f ));  
        productsList.add(new Product(3," Lenevo yoga book Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f));  
        productsList.add(new Product(5," Apple mac book Laptop ",90000f ));  
        // count number of products based on the filter  
        long count = productsList.stream()  
                    .filter(product -> product.price<30000)  //filter of data
                    .count();  
        System.out.println(count);  
    }  
}  


Searching for Reliable JAVA Development Company ?

Your Search ends here.


Output

codeoutput4

For filtering data
import java.util.*;  
import java.util.stream.Collectors;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the list 
        productsList.add(new Product(1," HP Laptop",25000f ));  
        productsList.add(new Product(2," Dell Laptop",30000f ));  
        productsList.add(new Product(3," Lenevo Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f ));  
        productsList.add(new Product(5," Apple Laptop",90000f ));  
        List productPriceList2 = productsList.stream()  
                                     .filter(p -> p.price > 30000)// filtering data  
                                     .map(p->p.price)        // fetching price  
                                     .collect(Collectors.toList()); // collecting as list  
        System.out.println(productPriceList2);  
    }  
}  

Output

codeoutput5

Conclusion

In this blog, we have learned Java Stream API with significant examples. So as mentioned earlier this is a very important feature added in Java 8.

A Guide on Java Stream API

A-Guide-on-Java-Stream-API

Table of Content

What is Java Stream API?

Java Stream API was added as a new feature in Java 8 – java.util.stream – which contains classes for processing sequences of elements. This package consists of classes, interfaces, and enum to allow functional-style operations on the elements. Simply by importing java.util.stream package in your file, you can make use of Stream.

A stream provides a set/collection of elements of a particular type in a sequential manner. A stream gets/computes elements on demand. It never stores the elements.

A stream is not a data structure, it just takes Collections, Arrays, or I/O resources as an input source. Stream supports aggregate operations namely filter, map, limit, reduce, find, match, and many more to use. Stream operations do the iterations internally over the source elements provided.

Streams don’t change the data structure which is officially there but only provide the result as per the predefined/ inbuilt methods.

Each intermediate operation is executed and returns a stream as a result, hence various intermediate operations can be pipelined.

Different Methods for Streams


Intermediate methods

map:The map method is used to returns a stream consisting of the results of applying the given function to the elements of this stream.

Example:
List no = Arrays.asList(2,3,4,5);
List square_no = number.stream().
map(x->x*x).collect(Collectors.toList());

     
List uris = new ArrayList<>();
       uris.add("C:\\My.txt"); 
Stream stream = uris.stream().map(uri -> Paths.get(uri));


filter: The filter method is used to select elements as per the implied argument. So we can get our desired output only.

Example:
List names = Arrays.asList("yash","sarthak","amit");
List result = names.stream().
filter(s->s.startsWith("s")).collect(Collectors.toList());


ArrayList list = new ArrayList<>();
 list.add("Monday");
list.add("Tuesday");
 list.add("Wednesday");
 list.add("Change");
 list.add("factory");
 list.add("Tomorrow");
 list.add("Italy"); 
list.add("Yesterday");
 list.add("Thursday");

Stream stream = list.stream().filter(element -> element.contains("d"));

sorted: The sorted method is definitely used for the sorting of the stream.

Example:
List names = Arrays.asList("Reflection","Collection","Stream");
List result = names.stream().sorted().collect(Collectors.toList());



Terminal methods

collect: The collect method is used to return the result of the intermediate operations performed on the stream.

Example:
List number = Arrays.asList(2,3,4,5,3);
Set square = number.stream().map(x->x*x).collect(Collectors.toSet());

forEach: The forEach method is used to iterate through an element that all are inside the stream.

Example:
List number = Arrays.asList(2,3,4,5);
number.stream().map(x->x*x).forEach(y->System.out.println(y));

reduce: Stream API allows reducing a sequence of elements to some value according to a specified function with the help of the reduce () method of the type Stream. This method takes two parameters: first – start value, second – an accumulator function. This method takes a Binary Operator as a parameter.

Example:
List number = Arrays.asList(2,3,4,5);
int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);

List integers = Arrays.asList(3, 1, 2); Integer reduced = integers.stream().reduce(13, (a, b) -> a - b);

Match: Stream API gives a very useful and important set of instruments to validate elements of a sequence according to some predicate in the argument. To do this, one of the following methods can be used: anyMatch(), allMatch(), noneMatch(). We can understand their uses by their names.

Example:
boolean isValid = list.stream().anyMatch(element -> element.contains("s"));  
// if there is ‘s’ then will show true or else false.
boolean isValidOne = list.stream().allMatch(element -> element.contains("t")); 
// if all elements have ‘t’ then true or else false.
boolean isValidTwo = list.stream().noneMatch(element -> element.contains("a"));
// if none of the element has ‘a’ then true or else false.

Extra Examples:

For a simple condition comparison
import java.util.*;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the productlist 
        productsList.add(new Product(1," redmi note 10",25000f ));  
        productsList.add(new Product(2," asus roug",30000f));  
        productsList.add(new Product(3," samsung note 10 lite ",28000f ));  
        productsList.add(new Product(4, “ Sony Experia 3",28000f));  
        productsList.add(new Product(5," Apple iphone 12 pro max ",90000f ));  
        List productPriceList = new ArrayList();  
        for(Product product: productsList){  
  
            if(product.price<30000){  
                productPriceList.add(product.price);     
            }  
        }  
        System.out.println(productPriceList);   // display data  
    }  
}  

Output

codeoutput1

For iteration
import java.util.stream.*;  
public class JavaStreamExample {  
    public static void main(String[] args){  
        Stream.iterate(1, element->element+1)  
        .filter(element -> element%5==0)  
        .limit(5)  
        .forEach(System.out::println);  
    }  
}  

Output

codeoutput2

To find sum
import java.util.*;  
import java.util.stream.Collectors;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products  in the list
        productsList.add(new Product(1," HP spector x360 Laptop",25000f ));  
        productsList.add(new Product(2," Dell inspiron Laptop",30000f ));  
        productsList.add(new Product(3," Lenovo legion Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f));  
        productsList.add(new Product(5," Apple mac book pro Laptop",90000f ));  
        // Using Collectors's method to sum the prices.  
        double totalPrice3 = productsList.stream()  
                        .collect(Collectors.summingDouble(product -> product.price ));  
        System.out.println(totalPrice3);  
          
    }  
}  

Output

codeoutput3

For count() method
import java.util.*;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the list
        productsList.add(new Product(1," HP Laptop",25000f ));  
        productsList.add(new Product(2," Dell xps Laptop",30000f ));  
        productsList.add(new Product(3," Lenevo yoga book Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f));  
        productsList.add(new Product(5," Apple mac book Laptop ",90000f ));  
        // count number of products based on the filter  
        long count = productsList.stream()  
                    .filter(product -> product.price<30000)  //filter of data
                    .count();  
        System.out.println(count);  
    }  
}  


Searching for Reliable JAVA Development Company ?

Your Search ends here.


Output

codeoutput4

For filtering data
import java.util.*;  
import java.util.stream.Collectors;  
class Product{  
    int id;  
    String name;  
    float price;  
    public Product(int id, String name, float price) {  
        this.id = id;  
        this.name = name;  
        this.price = price;  
    }  
}  
public class JavaStreamExample {  
    public static void main(String[] args) {  
        List productsList = new ArrayList();  
        //Adding Products in the list 
        productsList.add(new Product(1," HP Laptop",25000f ));  
        productsList.add(new Product(2," Dell Laptop",30000f ));  
        productsList.add(new Product(3," Lenevo Laptop",28000f ));  
        productsList.add(new Product(4," Sony Laptop",28000f ));  
        productsList.add(new Product(5," Apple Laptop",90000f ));  
        List productPriceList2 = productsList.stream()  
                                     .filter(p -> p.price > 30000)// filtering data  
                                     .map(p->p.price)        // fetching price  
                                     .collect(Collectors.toList()); // collecting as list  
        System.out.println(productPriceList2);  
    }  
}  

Output

codeoutput5

Conclusion

In this blog, we have learned Java Stream API with significant examples. So as mentioned earlier this is a very important feature added in Java 8.