Core Java

Java 8 Stream API Examples

Hello Friends, in this post, we will discuss Java 8 Stream API Examples.

So what we are going to do is, we will create a Player class, create multiple objects of Player class and then create a test class where will retrieve data of players using Stream API.

First example is with normal Stream(which we can call Serial Stream) and second example is with parallel stream.

Stream API

Serial Stream

As a first step, Let us create a Player class.

public class Player {

	private String name;
	private int id;
	private int fees;
	private String grade;
	
	public Player(String name, int id, int fees, String grade) {
		super();
		this.name = name;
		this.id = id;
		this.fees = fees;
		this.grade = grade;
	}
	
	/**
	* @return the name
	*/
	public String getName() {
		return name;
	}
	
	/**
	* @param name the name to set
	*/
	public void setName(String name) {
		this.name = name;
	}
	
	/**
	* @return the id
	*/
	public int getId() {
		return id;
	}
	
	/**
	* @param id the id to set
	*/
	public void setId(int id) {
		this.id = id;
	}
	
	/**
	* @return the fees
	*/
	public int getFees() {
		return fees;
	}
	
	/**
	* @param fees the fees to set
	*/
	public void setFees(int fees) {
		this.fees = fees;
	}
	
	/**
	* @return the grade
	*/
	public String getGrade() {
		return grade;
	}
	
	/**
	* @param grade the grade to set
	*/
	public void setGrade(String grade) {
		this.grade = grade;
	}

	@Override
	public String toString() {
		return "Player [name=" + name + ", id=" + id + ", fees=" + fees + ", grade=" + grade + "]";
	}
}

Now, let us create a test class to test Stream API.

public class TestJava8Streams {

	public static void main(String[] args) {
		List players = createPlayerList();
		
		/**********STREAM****************/
		System.out.println("STREAM");
		
		/****Get List of Players Who are in Grade AA***/
		System.out.println("Grade AA Players :");
	    players.stream().filter((Player player1)-> player1.getGrade().equalsIgnoreCase("AA")).collect(Collectors.toList()).forEach(System.out::println);
		/*********************************************/	
	   
	    /********Get Fee of Grade AA Players**********/
	    System.out.println("Fee Grade AA Players :");
		players.stream().filter((Player player1)-> player1.getGrade().equalsIgnoreCase("AA")).map(p->p.getFees()).collect(Collectors.toList()).forEach(System.out::println);;
		/*********************************************/
		
		/********Are All players getting Match Fee of more than 3 Crore*****/
		System.out.println("Does All Players getting Match Fee of more than 3 Crores:");
		boolean isAllPlayerHavingFeeMoreThansThreeCrore1 = players.stream().allMatch(player1 -> player1.getFees()>=30000000);
		System.out.println(isAllPlayerHavingFeeMoreThansThreeCrore1 ? "Yes": "No");
		/*******************************************************************/
		
		/********Are All players getting Match Fee of more than 1 Crore*****/
		System.out.println("Does All Players getting Match Fee equal to or more than 1 Crore:");
		boolean isAllPlayerHavingFeeMoreThansOneCrore1 = players.stream().allMatch(player1 -> player1.getFees()>=10000000);
		System.out.println(isAllPlayerHavingFeeMoreThansOneCrore1 ? "Yes": "No");
		/*******************************************************************/
		
		/*************Get Players with their Name and Grade******************/
		players.stream().collect(Collectors.toMap((Player player1)-> player1.getName(), (Player player1)-> player1.getGrade()));
		players.forEach(player1 -> System.out.println("Player Name:"+player1.getName() + " | " + "Player Grade:"+player1.getGrade()));
		/*******************************************************************/
		
		/*************Get any player detail.As per java docs ,multiple invocations can return different results******/
		Optional player1 =players.stream().findAny();
		System.out.println("Any Player:"+player1.get());
		/*******************************************************************/
		
		/********Get First Player in the list*****/
		players.stream().findFirst().get().getName();
		System.out.println("First Player in the list:"+player1.get());
		/****************************************/
		
		/********Get First Two Players from the list******/
		System.out.println("First two Players in the list:");
		players.stream().limit(2).collect(Collectors.toList()).forEach(System.out::println);;
		/************************************************/
		
		/********Player whose name alphabetically comes Last in the list******/
		Optional alphabeticallyLast1 = players.stream().max((Player st1,Player st2)-> st1.getName().compareToIgnoreCase(st2.getName()));
		System.out.println("Alphabetically last Player:"+alphabeticallyLast1.get().getName());
		/************************************************/
		
		/********Player whose name alphabetically comes First in the list******/
		Optional alphabeticallyFirst1 = players.stream().min((Player st1,Player st2)-> st1.getName().compareToIgnoreCase(st2.getName()));
		System.out.println("Alphabetically first Player::"+alphabeticallyFirst1.get().getName());
		/**********************************************************************/
		
	}
	
	private static List createPlayerList(){
		List palyers = new ArrayList();
		Player player2 = new Player("Dhawan",101,70000000,"AA");
		Player player1 = new Player("Rohit",102,70000000,"AA");
		Player player3 = new Player("Rahane",201,50000000,"A");
		Player player4 = new Player("Dhoni",202,50000000,"A");
		Player player5 = new Player("Raina",301,10000000,"C");
		Player player6 = new Player("Kohli",302,70000000,"AA");
		Player player7 = new Player("Jadeja",401,50000000,"A");
		Player player8 = new Player("Bumrah",402,70000000,"AA");
		Player player9 = new Player("Umesh",403,30000000,"B");
		Player player10 = new Player("Karthik",404,30000000,"B");
		Player player11 = new Player("Pandey",405,10000000,"C");
		
		palyers.add(player1);
		palyers.add(player2);
		palyers.add(player3);
		palyers.add(player4);
		palyers.add(player5);
		palyers.add(player6);
		palyers.add(player7);
		palyers.add(player8);
		palyers.add(player9);
		palyers.add(player10);
		palyers.add(player11);
		return palyers;
	
	}
}

Here is the ouput:

Grade AA Players :

Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

Player [name=Dhawan, id=101, fees=70000000, grade=AA, addresses=null]

Player [name=Kohli, id=302, fees=70000000, grade=AA, addresses=null]

Player [name=Bumrah, id=402, fees=70000000, grade=AA, addresses=null]

Fee Grade AA Players :

70000000

70000000

70000000

70000000

Does All Players getting Match Fee of more than 3 Crores:false

Does All Players getting Match Fee equal to or more than 1 Crore:true

Player Name:Rohit | Player Grade:AA

Player Name:Dhawan | Player Grade:AA

Player Name:Rahane | Player Grade:A

Player Name:Dhoni | Player Grade:A

Player Name:Raina | Player Grade:C

Player Name:Kohli | Player Grade:AA

Player Name:Jadeja | Player Grade:A

Player Name:Bumrah | Player Grade:AA

Player Name:Umesh | Player Grade:B

Player Name:Karthik | Player Grade:B

Player Name:Pandey | Player Grade:C

Any Player:Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

First Player in the list:Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

First two Players in the list:

Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

Player [name=Dhawan, id=101, fees=70000000, grade=AA, addresses=null]

Sorted List of PLayers according to their name in Alphabetical order:

Player [name=Bumrah, id=402, fees=70000000, grade=AA, addresses=null]

Player [name=Dhawan, id=101, fees=70000000, grade=AA, addresses=null]

Player [name=Dhoni, id=202, fees=50000000, grade=A, addresses=null]

Player [name=Jadeja, id=401, fees=50000000, grade=A, addresses=null]

Player [name=Karthik, id=404, fees=30000000, grade=B, addresses=null]

Player [name=Kohli, id=302, fees=70000000, grade=AA, addresses=null]

Player [name=Pandey, id=405, fees=10000000, grade=C, addresses=null]

Player [name=Rahane, id=201, fees=50000000, grade=A, addresses=null]

Player [name=Raina, id=301, fees=10000000, grade=C, addresses=null]

Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

Player [name=Umesh, id=403, fees=30000000, grade=B, addresses=null]

Alphabetically last Player:Umesh

Alphabetically first Player::Bumrah

Parallel Stream

Below is the same example using Parallel Streams

Below code is exactly same except that instead of stream() method, we will call parallelStream() method.

 public class TestJava8ParallelStream {

	public static void main(String[] args) {

		List players = createPlayerList();
		
		/****PARALLEL STREAM****************/
		System.out.println("PARALLEL STREAM");
		
		/****Get List of Players Who are in Grade AA***/
		System.out.println("Grade AA Players :");
	    players.parallelStream().filter((Player player1)-> player1.getGrade().equalsIgnoreCase("AA")).collect(Collectors.toList()).forEach(System.out::println);
		/*********************************************/	
	   
	    /********Get Fee of Grade AA Players**********/
	    System.out.println("Fee Grade AA Players :");
		players.parallelStream().filter((Player player1)-> player1.getGrade().equalsIgnoreCase("AA")).map(p->p.getFees()).collect(Collectors.toList()).forEach(System.out::println);;
		/*********************************************/
		
		/********Are All players getting Match Fee of more than 3 Crore*****/
		System.out.println("Does All Players getting Match Fee of more than 3 Crores:");
		boolean isAllPlayerHavingFeeMoreThansThreeCrore1 = players.parallelStream().allMatch(player1 -> player1.getFees()>=30000000);
		System.out.println(isAllPlayerHavingFeeMoreThansThreeCrore1 ? "Yes": "No");
		/*******************************************************************/
		
		/********Are All players getting Match Fee of more than 1 Crore*****/
		System.out.println("Does All Players getting Match Fee equal to or more than 1 Crore:");
		boolean isAllPlayerHavingFeeMoreThansOneCrore1 = players.parallelStream().allMatch(player1 -> player1.getFees()>=10000000);
		System.out.println(isAllPlayerHavingFeeMoreThansOneCrore1 ? "Yes": "No");
		/*******************************************************************/
		
		/*************Get Players with their Name and Grade******************/
		players.parallelStream().collect(Collectors.toMap((Player player1)-> player1.getName(), (Player player1)-> player1.getGrade()));
		players.forEach(player1 -> System.out.println("Player Name:"+player1.getName() + " | " + "Player Grade:"+player1.getGrade()));
		/*******************************************************************/
		
		/*************Get any player detail.As per java docs ,multiple invocations can return different results******/
		Optional player1 =players.parallelStream().findAny();
		System.out.println("Any Player:"+player1.get());
		/*******************************************************************/
		
		/********Get First Player in the list*****/
		players.parallelStream().findFirst().get().getName();
		System.out.println("First Player in the list:"+player1.get());
		/****************************************/
		
		/********Get First Two Players from the list******/
		System.out.println("First two Players in the list:");
		players.parallelStream().limit(2).collect(Collectors.toList()).forEach(System.out::println);;
		/************************************************/
		
		/********Player whose name alphabetically comes Last in the list******/
		Optional alphabeticallyLast1 = players.parallelStream().max((Player st1,Player st2)-> st1.getName().compareToIgnoreCase(st2.getName()));
		System.out.println("Alphabetically last Player:"+alphabeticallyLast1.get().getName());
		/************************************************/
		
		/********Player whose name alphabetically comes First in the list******/
		Optional alphabeticallyFirst1 = players.parallelStream().min((Player st1,Player st2)-> st1.getName().compareToIgnoreCase(st2.getName()));
		System.out.println("Alphabetically first Player::"+alphabeticallyFirst1.get().getName());
		/**********************************************************************/
	}
	
	private static List createPlayerList(){
		List palyers = new ArrayList();
		Player player2 = new Player("Dhawan",101,70000000,"AA");
		Player player1 = new Player("Rohit",102,70000000,"AA");
		Player player3 = new Player("Rahane",201,50000000,"A");
		Player player4 = new Player("Dhoni",202,50000000,"A");
		Player player5 = new Player("Raina",301,10000000,"C");
		Player player6 = new Player("Kohli",302,70000000,"AA");
		Player player7 = new Player("Jadeja",401,50000000,"A");
		Player player8 = new Player("Bumrah",402,70000000,"AA");
		Player player9 = new Player("Umesh",403,30000000,"B");
		Player player10 = new Player("Karthik",404,30000000,"B");
		Player player11 = new Player("Pandey",405,10000000,"C");
		
		palyers.add(player1);
		palyers.add(player2);
		palyers.add(player3);
		palyers.add(player4);
		palyers.add(player5);
		palyers.add(player6);
		palyers.add(player7);
		palyers.add(player8);
		palyers.add(player9);
		palyers.add(player10);
		palyers.add(player11);
		return palyers;
	
	}
}

Here is the Output With Parallel Stream:

Grade AA Players :

Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

Player [name=Dhawan, id=101, fees=70000000, grade=AA, addresses=null]

Player [name=Kohli, id=302, fees=70000000, grade=AA, addresses=null]

Player [name=Bumrah, id=402, fees=70000000, grade=AA, addresses=null]

Fee Grade AA Players :

70000000

70000000

70000000

70000000

Does All Players getting Match Fee of more than 3 Crores:false

Does All Players getting Match Fee equal to or more than 1 Crore:true

Player Name:Rohit | Player Grade:AA

Player Name:Dhawan | Player Grade:AA

Player Name:Rahane | Player Grade:A

Player Name:Dhoni | Player Grade:A

Player Name:Raina | Player Grade:C

Player Name:Kohli | Player Grade:AA

Player Name:Jadeja | Player Grade:A

Player Name:Bumrah | Player Grade:AA

Player Name:Umesh | Player Grade:B

Player Name:Karthik | Player Grade:B

Player Name:Pandey | Player Grade:C

Any Player:Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

First Player in the list:Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

First two Players in the list:

Player [name=Rohit, id=102, fees=70000000, grade=AA, addresses=null]

Player [name=Dhawan, id=101, fees=70000000, grade=AA, addresses=null]

Alphabetically last Player:Umesh

Alphabetically first Player::Bumrah

That’s all on Java 8 Stream API examples. If you found it helpful, Please share with it someone you think it will be helpful.

Published on Java Code Geeks with permission by Gaurav Bhardwaj, partner at our JCG program. See the original article here: Java 8 Stream API Examples

Opinions expressed by Java Code Geeks contributors are their own.

Gaurav Bhardwaj

Gaurav has done Masters in Computer Applications(MCA) and is working in Software development field for more than 10 years in Java/J2EE technologies. He is currently working with one of top MNC. He has worked on various frameworks like Struts, Spring, Spring Boot, Angular JS, JSF, Velocity, iBatis, MyBatis, Hibernate, JUnit, Mockito, Dozzer. He likes to explore new technologies and share his thoughts by writing a technical blog. He is the founder of JavaSolutionsGuide.blogspot.com.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Alex
Alex
5 years ago

/*************Get any player detail.As per java docs ,multiple invocations can return different results******/
37
Optional player1 =players.stream().findAny();
38
System.out.println(“Any Player:”+player1.get());
39
/*******************************************************************/
40

41
/********Get First Player in the list*****/
42
players.stream().findFirst().get().getName();
43
System.out.println(“First Player in the list:”+player1.get());
44
/****************************************/

ANUP NAIR
ANUP NAIR
5 years ago

Hi gaurav,

please correct the typo of your site name in the about section of your blog. its mentioned as JavaSolutionsGuilde.blogspot.com

Gaurav Bhardwaj
5 years ago
Reply to  ANUP NAIR

Thanks, Anup. It is updated now.

Back to top button