![]()
1 /**
2 *homework0926
3 *@author:kai li
4 */
5 package com.kai.li.homework0926;
6 import java.util.List;
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.Map;
10 import static java.util.stream.Collectors.groupingBy;
11 /**
12 *following class is client
13 */
14 public class HomeWork0926{
15 public static void main(String[] args)throws Exception{
16
17 /**
18 *question three
19 */
20
21 /*create data source*/
22
23 List<Student> students=Arrays.asList(new Student("小明",18,100,"class04"),new Student("小黄",22,70,"class04"),new Student("小真",25,90,"class03"),new Student("小花",30,80,"class02"),new Student("tom",28,66,"class02"),new Student("jerry",24,100,"class02"));
24
25 /*operate*/
26 int sumAge=students.stream().mapToInt(Student::getAge).sum();
27 int sumScore=students.stream().mapToInt(Student::getScore).sum();
28 System.out.println("学生的平均年龄是:"+sumAge/students.size()+",平均分数是:"+sumScore/students.size());
29
30 Map<String,List<Student>> studentsByClass=students.stream().collect(groupingBy(Student::getClassNum));
31 System.out.println("class average score is fllowing:");
32
33 studentsByClass.keySet().stream() //get stream
34 .mapToInt(i->(studentsByClass.get(i).stream() //map to int
35 .mapToInt(Student::getScore) //map to int from the level 2
36 .sum()) //sum
37 /studentsByClass.get(i).size()) //average
38 .forEach(System.out::println); //iterator and println
39
40 }
41 }
42 /**
43 *following class for question three
44 *create data source class
45 *student class
46 */
47 class Student{
48 private String name;
49 private int age;
50 private int score;
51 private String classNum;
52 Student(String name,int age,int score,String classNum){
53 this.name=name;
54 this.age=age;
55 this.score=score;
56 this.classNum=classNum;
57 }
58 public String getName(){
59 return name;
60 }
61 public int getAge(){
62 return age;
63 }
64 public int getScore(){
65 return score;
66 }
67 public String getClassNum(){
68 return classNum;
69 }
70 }