如何编写返回具有java8功能的字符串的for循环?

基本上我想要做的是用java 8特性编写一个像下面这样的for循环,

private String createHashCode() {
    for (int i = 0; i < MAX_TRY; i++) {
        final String hashCode = createRandomString();
        if (!ishashCodeExistence(hashCode)) {
            return hashCode;
        }
    }
    throw new HashCodeCollisonException();
}

我试过的是;

private String createHashCode() {
    IntStream.range(0, MAX_TRY).forEach($ -> {
        final String hashCode = createRandomString();
        if (!ishashCodeExistence(hashCode)) {
            return hashCode;
        }
    });
    throw new HashCodeCollisonException();
}

但是,lambda 中的 foreach 方法返回 void,因此我无法返回字符串。

有什么方法可以编写我的方法而不是使用普通的 for 循环?

回答

这里是你如何与流改写它,如果你真的想,虽然我个人比较喜欢好老for在这种特殊情况下循环:

private String createHashCode() {
    return IntStream
            .range(0, MAX_TRY)
            .mapToObj(x -> createRandomString())
            .filter(hashCode -> !ishashCodeExistence(hashCode))
            .findFirst()
            .orElseThrow(HashCodeCollisonException::new);
}


以上是如何编写返回具有java8功能的字符串的for循环?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>