You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream API筛选至少两门科目分数>80的学生

使用Java Stream API筛选符合条件的学生

首先需要补充Student类的构造方法(否则示例代码无法编译),同时可按需添加getter方法用于查看结果:

public class Student {
    private int stud_id;
    private String stud_name;
    private List<Integer> marks;

    // 构造方法
    public Student(int stud_id, String stud_name, List<Integer> marks) {
        this.stud_id = stud_id;
        this.stud_name = stud_name;
        this.marks = marks;
    }

    // getter方法
    public int getStud_id() {
        return stud_id;
    }

    public String getStud_name() {
        return stud_name;
    }

    public List<Integer> getMarks() {
        return marks;
    }
}

在Demo类的main方法中,使用Stream API筛选至少有两门科目分数>80的学生,完整代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Demo{
    public static void main(String[] args) {
        List<Student> ls=new ArrayList<>();
        ls.add(new Student(1,"Prasad",Arrays.asList(20,30,40,60)));
        ls.add(new Student(2,"Pratiksha",Arrays.asList(20,30,85,90)));
        ls.add(new Student(3,"Prasanthi",Arrays.asList(20,30,82,90)));
        
        // 筛选符合条件的学生
        List<Student> qualifiedStudents = ls.stream()
                .filter(student -> 
                    // 统计当前学生分数>80的科目数量,判断是否≥2
                    student.getMarks().stream()
                            .filter(mark -> mark > 80)
                            .count() >= 2
                )
                .collect(Collectors.toList());
        
        // 输出结果
        qualifiedStudents.forEach(student -> 
            System.out.printf("学生ID:%d,姓名:%s\n", student.getStud_id(), student.getStud_name())
        );
    }
}

代码逻辑说明

  1. 调用ls.stream()将学生列表转为Stream流;
  2. 外层filter方法中,对每个学生的marks列表生成子Stream,筛选出分数>80的元素后用count()统计数量,判断数量是否≥2;
  3. 最后通过collect(Collectors.toList())将符合条件的学生收集为新列表;
  4. 示例中修改了部分学生的分数,确保有符合条件的结果便于验证。

内容的提问来源于stack exchange,提问作者user7283152

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:06:22