gpt4 book ai didi

lambda - 使用 Lambda 函数使用供应商提供的所有对象

转载 作者:行者123 更新时间:2023-12-04 09:57:26 27 4
gpt4 key购买 nike

寻找如何使用 Java lambda 函数以便消费者可以处理供应商提供的所有对象,并摆脱显式 while循环和 null检查。

我有一个数据库字符串键的供应商,我想使用消费者来处理每个键。

Supplier<String> keyGen = new SimpleKeySupplier(keyPrefix, numKeys);
Consumer<String> consumer = (String key) -> System.out.println("key="+key);

我要 consumer处理 keyGen 提供的每个 key 并尝试了以下方法。它有效,但我确信必须有一种更简洁的方法来使用 lambda 函数来简化它。
    // Test that the correct keys have been populated.
Supplier<String> keyGen = new SimpleKeySupplier(keyPrefix, NumKeys);
String k = keyGen.get();
while(k != null) {
consumer.accept(k);
k = keyGen.get();
}

SimpleKeySupplier 有效,下面提供了一个简化版本:
import java.util.function.Supplier;

public class SimpleKeySupplier implements Supplier<String> {
private final String keyPrefix;
private final int numToGenerate;
private int numGenerated;

public SimpleKeySupplier(String keyPrefix, int numRecs) {
this.keyPrefix = keyPrefix;
numToGenerate = numRecs;
numGenerated = 0;
}
@Override
public String get() {
if (numGenerated >= numToGenerate)
return null;
else
return (keyPrefix + numGenerated++);
}
}

本示例中的 Consumer 为在 StackOverflow 上发布而进行了极大的简化。

最佳答案

您可以这样做,使用 Java9 中添加的新功能。

Stream.generate(keyGen).takeWhile(Objects::nonNull).forEach(consumer);

关于lambda - 使用 Lambda 函数使用供应商提供的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53844760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com