MST

星途 面试题库

面试题:Java函数式编程与集合操作

给定一个包含学生对象的列表,学生对象有姓名(name)和成绩(score)属性。使用Java函数式编程和Lambda表达式,求出成绩最高的学生的姓名。如果成绩相同,返回任意一个。要求说明函数式编程在这种场景下的优势。
32.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.List;
import java.util.Optional;

class Student {
    private String name;
    private int score;

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

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }
}

public class Main {
    public static String getHighestScoringStudentName(List<Student> students) {
        Optional<Student> highestScoringStudent = students.stream()
               .max((s1, s2) -> Integer.compare(s1.getScore(), s2.getScore()));

        return highestScoringStudent.map(Student::getName).orElse(null);
    }
}

函数式编程在这种场景下的优势

  1. 代码简洁:通过使用Lambda表达式和流操作,代码变得更加紧凑和易读。相比于传统的迭代方式,减少了样板代码,例如显式的循环和临时变量。
  2. 声明式编程风格:函数式编程采用声明式风格,关注“做什么”而不是“怎么做”。在上述代码中,我们只需声明要从学生列表中找到成绩最高的学生,而无需关心具体的遍历和比较过程。
  3. 易于并行处理:流操作天然支持并行处理。在大数据量的情况下,可以很方便地将流处理并行化,提高处理效率,而无需手动管理线程和锁等复杂操作。
  4. 可维护性和可扩展性:函数式代码通常更易于维护和扩展。因为每个操作都是独立的函数,修改或添加新功能时,对其他部分的影响较小。