{
MALE, FEMALE
}
public class Person
{
private String name;
private String email;
private Gender gender;
private int age;
public Person(String name, String email, Gender gender, int age)
{
super();
this.name = name;
this.email = email;
this.gender = gender;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public Gender getGender()
{
return gender;
}
public void setGender(Gender gender)
{
this.gender = gender;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
@Override
public String toString()
{
return "Person [name=" + name + "]";
}
}
StreamCollectDemo.javaimport java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
public class StreamCollectDemo
{
public static void main(String[] args)
{
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice","alice@gmail.com",Gender.FEMALE, 26));
personList.add(new Person("Bob","bob@gmail.com", Gender.MALE, 32));
personList.add(new Person("Carol","carol@gmail.com",Gender.FEMALE, 23));
personList.add(new Person("David","david@gmail.com", Gender.MALE, 39));
personList.add(new Person("Eric","eric@gmail.com", Gender.MALE, 26));
/*
* The collect() operation accumulates elements in a stream into a
* container such as a collection. It performs mutable reduction
* operation in which the reduced (final) value is a mutable result
* container such as an ArrayList. This method takes a Collector
* implementation that provides useful reduction operations. The
* Collectors class is a common implementation in the JDK. And we are
* going to see how it is used in the following examples.
*
* The following code accumulates emails of the persons into a list
* collection:
*/
List<String> emailList = personList.stream() // Stream<Person>
.map(p -> p.getEmail()) // Stream<String>
.collect(Collectors.toList());
System.out.println("emailList = "+ emailList);
/*
* We can specify exactly which type of collection as the result. For
* example, the following code collects emails into a TreeSet:
*/
Set<String> setEmails = personList.stream() // Stream<Person>
.map(p -> p.getEmail()) // Stream<String>
.collect(Collectors.toCollection(TreeSet::new));
System.out.println("setEmails = "+ setEmails);
/*
* The following code groups the person by gender:
*/
Map<Gender, List<Person>> byGenderMap = personList.stream()
.collect(Collectors.groupingBy(p -> p.getGender()));
System.out.println("Groups by gender = " + byGenderMap);
/*
* The following code accumulates names and concatenates them into
* a String, separated by commas:
*/
String names = personList.stream() //Stream<Person>
.map(p -> p.getName()) // Stream<String>
.collect(Collectors.joining(", "));
System.out.println("names = "+names);
}
}
OutputemailList = [alice@gmail.com, bob@gmail.com, carol@gmail.com, david@gmail.com, eric@gmail.com]
setEmails = [alice@gmail.com, bob@gmail.com, carol@gmail.com, david@gmail.com, eric@gmail.com]
Groups by gender = {FEMALE=[Person [name=Alice], Person [name=Carol]],
MALE=[Person [name=Bob], Person [name=David], Person [name=Eric]]}
names = Alice, Bob, Carol, David, Eric
Refer: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.htmlClick the below link to download the code:https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_diff_way_collect.zip?attredirects=0&d=1Github Link:https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_diff_way_collectBitbucket Link:https://bitbucket.org/ramram43210/java/src/17906082b9d83230789adc7b5df551c73ce2b46f/BasicJava/StreamDemo_diff_way_collect/?at=masterSee also: All JavaEE Viedos PlaylistAll JavaEE ViedosAll JAVA EE LinksServlets TutorialAll Design Patterns LinksJDBC TutorialJava Collection Framework TutorialJAVA TutorialKids Tutorial