java.util.NoSuchElementException:没有值存在Java 8 Lambda

时间:2015-06-23 18:50:24

标签: java lambda

我得到了这个。但我的列表不是空的,它们有代码的元素" ADPL"。为什么这会让我回归NoSuchElement?

String retour = CodeExecutionChaine.A.getCode();
    if (!lstChaines.isEmpty()) {
      retour = lstChaines.stream()
                         .filter(t -> t.getNomChaine() == Chaines.ADPL.getCode())
                         .map(Chaine::getStatutChaine)
                         .findFirst()
                         .orElse(CodeExecutionChaine.A.getCode());

enum Chaines

public enum Chaines {

  ADPL("ADPL"),
  ADIL("ADIL"),
  ADSL("ADSL");

  private String code = "";

  Chaines(String code) {
    this.code = code;
  }

  public String getCode() {
    return this.code;
  }

}

CodeExecutionChaine

也是如此

1 个答案:

答案 0 :(得分:3)

t -> t.getNomChaine() == Chaines.ADPL.getCode()更改为t -> t.equals(Chaines.ADPL.getCode())

==检查身份。因此,==仅在两个引用指向同一个对象时才会生成true。另一方面,equals会检查equality。两个不指向同一个对象但具有相似properties的引用仍然被认为是相同的。得到NoSuchElementException,因为您使用== filter Stream导致零元素满足条件。