在迭代函数列表时只调用一次Java 8函数

时间:2016-10-14 08:19:40

标签: java function lambda java-8

是否有一种优雅的方式来存储apply()方法的返回值,因此不必多次调用它?因为我能想到的唯一方法是创建一个本地地图变量来存储函数 - “返回值”对。

@Autowired
private List<Function<String, String>> evaluators; 
//...
private String evaluate(String code) {  
    return evaluators.stream().filter(f -> f.apply(code) != null).findFirst().get().apply(code); 
}

1 个答案:

答案 0 :(得分:7)

试试这个。

  private String evaluate(String code) {  
      return evaluators.stream()
          .map(f -> f.apply(code))
          .filter(s -> s != null)
          .findFirst().get();
  }