Fai*_*wai 6 java collections optimization 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;
}
Run Code Online (Sandbox Code Playgroud)
注意: unfilteredSet并adminAreaSet保持不同的子类型Student
由于问题是用java-stream标记的,因此提高代码可读性的一种方法是将其转换为:
Set<String> adminAreaID = getAdminStudents().stream()
.map(Student::getId)
.collect(Collectors.toSet());
return getAllStudents().stream()
.filter(student -> adminAreaID.contains(student.getId()))
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)