Java 8 Collectors: groupingBy Example
2017-03-05 09:54
218 查看
Java 8 Collectors: groupingBy Example
By Arvind Rai, November 29, 2014groupingBy is a static method of java.util.stream.Collectors in java 8. groupingBy does the grouping of elements on the basis of any given key and returns a Collector. Find the method syntax.
<T,K> Collector<T,?,Map<K,List<T>>> groupingBy(Function<? super T,? extends K> classifier)
For the example, we will create a Student class.
Student.java
package com.concretepage.util.stream; public class Student { private String name; private int age; private String className; public Student(String name,String className,int age){ this.name=name; this.age=age; this.className = className; } public String getName() { return name; } public int getAge() { return age; } public String getClassName() { return className; } }
Now if we want to group students on the basis of className, we will do as below.
Map<String, List<Student>> stdByClass = list.stream() .collect(Collectors.groupingBy(Student::getClassName));
We have a list of Student class. Grouping is done on the basis of student class name. List is converted into stream of student object. Then call collect method of stream. groupingBy of Collectors class checks each element of stream and gets class name and then
group it as list. Finally we get a map where key is the one by which grouping is done. Find the complete example.
CollectorsGroupingBy.java
package com.concretepage.util.stream;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class CollectorsGroupingBy {
public static void main(String[] args) {
Student s1 = new Student("Ram", "A", 20);
Student s2 = new Student("Shyam", "B", 22);
Student s3 = new Student("Mohan", "A", 22);
Student s4 = new Student("Mahesh", "C", 20);
Student s5 = new Student("Krishna", "B", 21);
List<Student> list = Arrays.asList(s1,s2,s3,s4,s5);
//Group Student on the basis of ClassName
System.out.println("----Group Student on the basis of ClassName----");
Map<String, List<Student>> stdByClass = list.stream() .collect(Collectors.groupingBy(Student::getClassName));
stdByClass.forEach((k,v)->System.out.println("Key:"+k+" "+
((List<Student>)v).stream().map(m->m.getName()).collect(Collectors.joining(","))));
//Group Student on the basis of age
System.out.println("----Group Student on the basis of age----");
Map<Integer, List<Student>> stdByAge = list.stream()
.collect(Collectors.groupingBy(Student::getAge));
stdByAge.forEach((k,v)->System.out.println("Key:"+k+" "+
((List<Student>)v).stream().map(m->m.getName()).collect(Collectors.joining(","))));
}
}
Find the output.
----Group Student on the basis of ClassName---- Key:A Ram,Mohan Key:B Shyam,Krishna Key:C Mahesh ----Group Student on the basis of age---- Key:20 Ram,Mahesh Key:21 Krishna Key:22 Shyam,Mohan
Tweet
相关文章推荐
- java8特性:Collectors.groupingBy进行分组、排序等操作
- Java 8 Stream Collectors groupingBy 示例
- Step By Step guide to Read XML file in Java Using SAX Parser Example
- Android项目编译的时候出现:Caused by: java.lang.ClassNotFoundException: com.example.aaa.MainActivity
- Maven by Example 2.1. Verify your Java Installation
- Collectors.groupingBy 使用
- Java 9 Programming By Example.pdf
- DLX by java (example : hdu 2295)
- java8特性:Collectors.groupingBy进行分组、排序等操作 (二)
- Stream Collectors groupingBy 例子
- Bash by example, Part 1
- Linux Socket Programming by Example-第八章 TCP通信
- Java CyclicBarrier Example
- A Step by Step Backpropagation Example阅读笔记
- java fx example
- Hibernate:Caused by: java.sql.SQLException: Incorrect string value: '\xE8\x8F异常
- An unexpected error has been detected by Java Runtime Environment
- Java Servlet Example
- java8学习之groupingByConcurrent与partioningBy源码分析
- Caused by: java.sql.SQLException: No database selected