【发布时间】:2020-12-06 17:55:29
【问题描述】:
我是一名初级开发人员,目前在一家初创公司实习,我继承了其他开发人员的工作,也是实习生,我正在开发一个网络应用程序。 后端是 Java 的,两周前开始实习之前我从未见过 Java 代码,因此有时我在阅读和理解代码时遇到了很多麻烦,过去 48 小时我一直卡在这上面。
我必须创建一个使用多个参数过滤配置文件的功能。这是函数:
// Apply filters on our experts list
private List<UserExpertInfo> applyFilterOnUserExpertInfo(List<UserExpertInfo> experts, FiltersExpertsRequest filters) {
if (filters.isAvailable != null && filters.isAvailable == true ) {
experts.removeIf(e -> e.availability == false);
}
if (filters.name != null && !filters.name.equals("")) {
experts.removeIf(e -> !(e.firstName + e.LastName).contains(filters.name));
}
if (filters.maximumPrice != null) {
experts.removeIf(e -> !(filters.maximumPrice.longValue() >= e.wage.longValue()));
}
// /!\ CAREFUL /!\ We can't have a NULL field in DB, or the removeIf function automatically returns NULL and the server sends back an error
if (filters.minimumRating != null) {
experts.removeIf(e -> !(filters.minimumRating.longValue() <= e.rating.longValue()));
}
// Expertises
if (filters.fluids != null && filters.fluids == true) {
experts.removeIf(e -> !e.expertises.fluids);
}
if (filters.thermic != null && filters.thermic == true) {
experts.removeIf(e -> !e.expertises.thermic);
}
if (filters.struct != null && filters.struct == true) {
experts.removeIf(e -> !e.expertises.struct);
}
if (filters.electro != null && filters.electro == true) {
experts.removeIf(e -> !e.expertises.electroMag);
}
// Areas
if (filters.aerospace != null && filters.aerospace == true) {
experts.removeIf(e -> !Arrays.asList(e.areas).contains("AEROSPACE"));
}
if (filters.industries != null && filters.industries == true) {
experts.removeIf(e -> !Arrays.asList(e.areas).contains("INDUSTRIES"));
}
if (filters.transport != null && filters.transport == true) {
experts.removeIf(e -> !Arrays.asList(e.areas).contains("TRANSPORT"));
}
if (filters.energy != null && filters.energy == true) {
experts.removeIf(e -> !Arrays.asList(e.areas).contains("ENERGY"));
}
// Languages : TODO
if (filters.languages != null) {
if (filters.languages.contains("english")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("english"));
}
if (filters.languages.contains("spanish")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("spanish"));
}
if (filters.languages.contains("french")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("french"));
}
if (filters.languages.contains("german")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("german"));
}
if (filters.languages.contains("italian")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("italian"));
}
if (filters.languages.contains("dutch")) {
experts.removeIf(e -> !Arrays.asList(e.languages).contains("dutch"));
}
}
// Softwares : TODO
return experts;
}
所以,一切都很好,但我被困在语言部分。我似乎无法访问“语言”数组中的“名称”字段。如果我误解了 Java 的工作原理,请再次原谅我。 以下是此函数所依赖的文件:
package fr.squad.zel.api;
import java.util.UUID;
public class UserExpertInfo {
public UUID userId;
public UUID expertId;
public String title;
public Number rating;
public Number wage;
public boolean availability;
public UUID photoUrl;
public String firstName;
public String LastName;
public Expertise expertises;
public String[] areas;
public RefSoftwares[] softwares;
public RefLanguages[] languages;
}
和
package fr.squad.zel.api;
import java.util.UUID;
public class RefLanguages {
public UUID id;
public String name;
}
最后,这是我获取专家参数的方法(这只是函数的相关部分):
// Get expert's areas.
List<String> tempStringList = compoExpertsAreasServiceActions.findNamesByIdExpert(userTemp.getId());
userExpertTemp.areas = tempStringList.toArray(new String[tempStringList.size()]);
// Get expert's Softwares.
List<RefSoftwares> tempSoftwaresList = compoExpertsSoftwaresService.findAllByExpertId(userTemp.getId());
userExpertTemp.softwares = tempSoftwaresList.toArray(new RefSoftwares[tempSoftwaresList.size()]);
// Get expert's Languages.
List<RefLanguages> tempLanguagesList = this.languageService.findAllByUserId(userTemp.getId());
userExpertTemp.languages = tempLanguagesList.toArray(new RefLanguages[tempLanguagesList.size()]);
return userExpertTemp;
过滤器工作正常,我已经打印了所有过滤器。但是我无法访问这些语言的名称,我真的无法理解这些对象相互协作的方式,并且经过很长时间搜索 StackOverflow 和其他地方,我真的无法找到解决办法。
【问题讨论】:
标签: java arrays list sorting filter