java stream短路_java – 如何在Stream上短路减少?

我怀疑你想要这种类型的结构.

// stop when any element evaluates to true

boolean any = stream.anyMatch(t -> t);

你可以仔细检查一下

Stream.of(1,2,3,4).peek(System.out::println).anyMatch(i -> i == 2);

版画

1

2

对于一个平行的例子

AtomicInteger count = new AtomicInteger();

IntStream.range(0,1000).parallel().peek(t -> count.incrementAndGet()).anyMatch(i -> i == 2);

System.out.println("count: " + count);

打印一个数字

count: 223

确切的数字有所不同.

对于referencePipeline,anyMatch调用

@Override

public final boolean anyMatch(Predicate super P_OUT> predicate) {

return evaluate(MatchOps.makeRef(predicate,MatchOps.MatchKind.ANY));

}

这叫做

public static TerminalOp makeRef(Predicate super T> predicate,MatchKind matchKind) {

Objects.requireNonNull(predicate);

Objects.requireNonNull(matchKind);

class MatchSink extends BooleanTerminalSink {

MatchSink() {

super(matchKind);

}

@Override

public void accept(T t) {

if (!stop && predicate.test(t) == matchKind.stopOnPredicateMatches) {

stop = true;

value = matchKind.shortCircuitResult;

}

}

}

return new MatchOp<>(StreamShape.REFERENCE,matchKind,MatchSink::new);

}

在那里你可以看到短路代码.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值