map():
- It takes a lambda expression as its only argument, and uses it to change every individual element in the stream.
- Its return value is a new Stream object containing the changed elements.
Creating a Stream:
List<Integer> myList = new ArrayList<Integer>(); myList.add(1); myList.add(5); myList.add(8); Stream<Integer> myStream = myList.stream(); |
We can create streams for arrays as follows:
Integer[] myArray = {1, 5, 8}; Stream<Integer> myStream = Arrays.stream(myArray); |
map to convert all elements in an array of strings to uppercase:
String[] myArray = new String[]{“harin”, “satya”, “annie”, “amar”}; Stream<String> myStream = Arrays.stream(myArray); Stream<String> myNewStream = myStream.map(s -> s.toUpperCase()); |
To convert it into an array, you use its toArray method:
String[] myNewArray = myNewStream.toArray(String[]::new); |
filter():
- filter() method takes lambda expression as input and return boolean value.
- If filter() method returns true, then the element enter into resultant stream.
- filter() method returns stream after filtering the data.
Program to filter the Strings starts with “s” in a list:
import java.util.*; import java.util.stream.*; class Main { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add(“Java”); list.add(“JDBC”); list.add(“Servlets”); list.add(“JSP”); list.add(“Spring”); list.add(“Hibernate”); Stream<String> st = list.stream(); Stream<String> res = st.filter(s->s.startsWith(“S”)); res.forEach(System.out::println); } } |
Write the above filtering logic in single line:
list.stream().filter(s->s.startsWith(“S”)).forEach(System.out::println); |
Display string whose length is 4:
import java.util.*; import java.util.stream.*; class Main { public static void main(String[] args) { String[] arr = {“Java”, “JDBC”, “Servlets”, “JSP”, “Spring”}; List<String> list = new ArrayList<String>(); for(int i=0 ; i<arr.length ; i++) { list.add(arr[i]); } list.stream().filter(s->s.length()==4).forEach(System.out::println); } } |
Program to display only even numbers in the list using stream api:
import java.util.*; import java.util.stream.*; class Main { public static void main(String[] args) { int[] arr = {5, 2, 8, 9, 3, 7, 1, 4, 6}; List<Integer> list = new ArrayList<Integer>(); for(int x : arr){ list.add(x); } System.out.println(“List is : ” + list); System.out.println(“Even numbers list is : “); list.stream().filter(s->s%2==0).forEach(System.out::println); } } |