steam 内实现业务逻辑编写--样例

发布时间 2023-05-23 10:11:53作者: 张载zz
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class Student {
    private String name;
    private int age;
    private int score;

    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getScore() {
        return score;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", 20, 85));
        students.add(new Student("Bob", 18, 90));
        students.add(new Student("Charlie", 22, 75));
        students.add(new Student("David", 19, 95));

        List<Student> filteredAndSortedStudents = students.stream()
                .filter(s -> s.getAge() >= 18 && s.getScore() > 80)
                .sorted(Comparator.comparing(Student::getScore).reversed())
                .collect(Collectors.toList());

        filteredAndSortedStudents.forEach(s -> System.out.println(s.getName() + " - " + s.getScore()));
    }
}

 

在上述示例中,我们首先创建了一个包含学生对象的集合。

然后,使用stream()方法将集合转换为一个Stream对象。接下来,使用filter()方法筛选出符合条件的学生,即年龄大于等于18岁且分数大于80分的学生。

然后,使用sorted()方法对学生进行排序,按照分数降序排列。最后,使用collect()方法将结果收集到一个新的List中。

最后,通过forEach()方法遍历结果并打印每个学生的姓名和分数。