java - 有没有办法使用 java8 进一步优化下面的代码?

标签 java optimization collections java-8 java-stream

我在我的项目中遇到了以下代码。我想知道是否可以通过使用 Java 8 流或一般的收集 API 进一步优化它。

private Set<Student> getFilteredSet() {
    Set<Student> unfilteredSet = getAllStudents();
    Set<Student> adminAreaSet = getAdminStudents();

    Set<String> adminAreaID = new HashSet<>();
    Set<Student> filteredSet = new HashSet<>();

    for (final Student student : adminAreaSet) {
        adminAreaID.add(student.getId());
    }
    for (final Student student : unfilteredSet) {
        if (adminAreaID.contains(student.getId())) {
            filteredSet.add(student);
        }
    }   
    return filteredSet;
}

注意:unfilteredSetadminAreaSet 包含Student 的不同子类型

最佳答案

由于问题被标记为 ,提高代码可读性的一种方法是将其转换为:

Set<String> adminAreaID = getAdminStudents().stream()
        .map(Student::getId)
        .collect(Collectors.toSet());

return getAllStudents().stream()
        .filter(student -> adminAreaID.contains(student.getId()))
        .collect(Collectors.toSet());

关于java - 有没有办法使用 java8 进一步优化下面的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108059/

相关文章:

optimization - "high contrast"曲线的快速公式

php - 使用 MySQL 和 PHP 检查线程中有多少帖子的最快方法

java - 无法使用带有 List<SubType> 的 List<SuperType> 参数调用函数

java - 应该如何在 java 类中定义日期属性?

java - 如何从哈希表中检索数据以查找冲突

MySQL:优化无主键的表(索引、外键)

excel - VBA-按属性筛选用户定义类的集合/词典的最有效方法

java - Collection.stream().forEach() 和 Collection.forEach() 有什么区别?

java - 模块 java.base 不读取模块 java.desktop

java - 如何获取父类(super class)方法中最终静态字段的覆盖值?