Java 8 个编辑流元素

Java 8 edit stream elements

我需要过滤和修改过滤对象的值。 必须过滤的逻辑如下。

    boolean isUpdated = false;
    for (final Identifier identifier : identifiers)
    {
      if (identifier.type == type)
      {
        identifier.identifier = identifierValue;
        identifier.label = label;
        identifier.comment = comment;
        isUpdated = true;
        break;
      }

我试过这样。但是我们如何设置 isUpdated = true using java 8 的值?

    Arrays.stream(identifiers).filter(a -> a.type == type).forEach(i -> {
      i.identifier = identifierValue;
      i.label = label;
      i.comment = comment;
    });

您可以使用的“hack”:

boolean[] isUpdated = new boolean[] {false};

Arrays.stream(identifiers).filter(a -> a.type == type).forEach(i -> {
      i.identifier = identifierValue;
      i.label = label;
      i.comment = comment;
      isUpdated[0] = whatever_you_want;
    });```

根据给出的逻辑,findFirst应该在找到第一个实例后停止。

    boolean isUpdated = false;
    Optional<Identifier> result = Arrays.stream(identifiers).filter(i -> i.type==type).findFirst();
    result.ifPresent(i -> {
        i.identifier = identifierValue;
        i.label = lebel;
        i.comment = comment;
    });
    isUpdated = result.isPresent();