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();
我需要过滤和修改过滤对象的值。 必须过滤的逻辑如下。
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();