【发布时间】:2021-12-08 16:08:49
【问题描述】:
这里是 Java 11。我有以下 POJO:
@Data // Lombok; adds getters, setters, all-args constructor and equals and hashCode
public class Fliflam {
private String merf;
private String tarf;
private Boolean isFlerf;
}
我有一个方法可以验证Flimflam 并返回验证Flimflam 时遇到的任何错误的List<String>。如果有人出于某种原因认为这有帮助,我可以将其更改为返回 Optional<List<String>>,尤其是在处理 Stream API 时:
public List<String> validateFlimflam(Flimflam flimflam) {
List<String> errors = new ArrayList<>();
// ... validation code omitted for brevity
// 'errors' list is populated with any errors; otherwise it returns empty
return errors;
}
我想通过List<Flimflam> 流式传输(Stream API)并填充Map<Flimflam,List<String>> 错误映射,其中映射的键是验证失败的Flimflam,其对应的value 是验证错误字符串的列表。
我可以像这样以“老式”的方式实现这一点:
List<Flimflam> flimflams = getSomehow();
Map<Flimflam,List<String>> errorsMap = new HashMap<>();
for (Flimflam ff : flimflams) {
List<String> errors = validateFlimflam(ff);
if (!errors.isEmpty() {
errorsMap.put(ff, errors);
}
}
如何通过 Stream API 完成此操作?
【问题讨论】:
-
使用 Vavr
Validation是否更有意义? -
@hotmeatballsoup 实际上,它没有。它没有指定
validateFlimflam方法的声明位置(尽管可以推测)。确切地知道如何应用任何 lambda 或方法引用非常重要。奇怪的是,接受的答案不起作用,因为它在语法上不正确。但我没有投反对票。 -
那么您或其他人可能会提出要求,并让我有机会添加更多细节。值得深思。
标签: java java-stream