使用Stream统计男生女生数量的实现
1. 流程概述
下面是整个流程的步骤概述,我们将使用Java的Stream API来实现统计男生女生数量的功能。
步骤 | 描述 |
---|---|
1 | 创建学生对象的列表 |
2 | 使用Stream将学生对象列表转换为流 |
3 | 使用filter操作过滤出男生的流 |
4 | 使用count操作统计男生的数量 |
5 | 使用filter操作过滤出女生的流 |
6 | 使用count操作统计女生的数量 |
2. 代码实现
2.1 创建学生对象的列表
首先,我们需要创建一个包含学生对象的列表。每个学生对象都有一个性别字段用于表示性别。
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", "female"));
students.add(new Student("Bob", "male"));
students.add(new Student("Charlie", "male"));
students.add(new Student("Emily", "female"));
2.2 使用Stream将学生对象列表转换为流
下一步,我们需要使用stream()
方法将学生对象列表转换为流。
Stream<Student> studentStream = students.stream();
2.3 使用filter操作过滤出男生的流
我们可以使用filter()
方法来过滤出性别为男性的学生对象。
Stream<Student> maleStudents = studentStream.filter(student -> student.getGender().equals("male"));
2.4 使用count操作统计男生的数量
使用count()
方法可以统计流中元素的数量,我们可以用它来统计男生的数量。
long maleCount = maleStudents.count();
System.out.println("男生数量:" + maleCount);
2.5 使用filter操作过滤出女生的流
接下来,我们可以使用filter()
方法来过滤出性别为女性的学生对象。
Stream<Student> femaleStudents = studentStream.filter(student -> student.getGender().equals("female"));
2.6 使用count操作统计女生的数量
同样地,我们使用count()
方法来统计女生的数量。
long femaleCount = femaleStudents.count();
System.out.println("女生数量:" + femaleCount);
3. 完整代码示例
下面是完整的代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
class Student {
private String name;
private String gender;
public Student(String name, String gender) {
this.name = name;
this.gender = gender;
}
public String getGender() {
return gender;
}
}
public class StudentCount {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", "female"));
students.add(new Student("Bob", "male"));
students.add(new Student("Charlie", "male"));
students.add(new Student("Emily", "female"));
Stream<Student> studentStream = students.stream();
Stream<Student> maleStudents = studentStream.filter(student -> student.getGender().equals("male"));
long maleCount = maleStudents.count();
System.out.println("男生数量:" + maleCount);
Stream<Student> femaleStudents = studentStream.filter(student -> student.getGender().equals("female"));
long femaleCount = femaleStudents.count();
System.out.println("女生数量:" + femaleCount);
}
}
4. UML序列图
下面是使用Mermaid语法绘制的UML序列图,用于展示代码的执行流程。
sequenceDiagram
participant Developer
participant Rookie
Developer -> Rookie: 解释整个流程的步骤
Developer -> Rookie: 提供代码示例
Developer -> Rookie: 解释每一步的代码意义
Developer -> Rookie: 回答问题和提供帮助
Rookie -> Developer: 学习并实践代码
Rookie -> Developer: 提问和寻求解决方案
5. UML关系图
下面是使用Mermaid语法绘制的UML关系图,用于展示学生和性别之间的关系。
erDiagram
STUDENT ||--|{ GENDER : has
STUDENT {
String name
}
GENDER {
String gender
}
6. 总结
本文通过使用Java的Stream API,教会了刚入行的开发者如何统计男生和女生的数量。我们使用了filter操作来过