这里我使用了4次lamda来完成一项很简单的功能
//将F40USD,F40SGD,转换为F40EUR
因为F40EUR需要作为最终的输出
不难看出,下面代码最大的问题就是挤在一堆,没有层次感,这也是lamda表达式的特点,大多数时候是优点(快)。
处理ifelse比较多的时候就不要去用了
newError=error.stream().filter(s -> !t0CurrencySymbol.contains(s.substring(0,3))).collect(Collectors.toList());
error= error.stream().filter(s -> t0CurrencySymbol.contains(s.substring(0,3))).collect(Collectors.toList());
error.forEach(c->cfdError.add(c.substring(0,3)));
Set<String> cfdErrorAdd = t0Currency.stream().filter(s -> cfdError.contains(s.substring(0, 3))).collect(Collectors.toSet());
newError.addAll(cfdErrorAdd);
在优化后
很简单朴素的代码,可能我在之后学习力会
for (String s : error) {
if(!t0CurrencySymbol.contains(s.substring(0,3))){
newError.add(s);
}else {
for (String s1 : t0Currency) {
if(s.substring(0,3).equals(s1.substring(0,3))){
newError.add(s1);
}
}
}
}