Java8流:每个流
您能帮助我使用Java8流API编写以下代码吗Java8流:每个流,java,java-8,java-stream,Java,Java 8,Java Stream,您能帮助我使用Java8流API编写以下代码吗 SuperUser superUser = db.getSuperUser; for (final Client client : superUser) { if (cartData.getClient().equals(client.getUid())) { client.setIsSelected(true); break; } } 谢谢你的帮助 如何使用Java 8流对此进行编码: Super
SuperUser superUser = db.getSuperUser;
for (final Client client : superUser) {
if (cartData.getClient().equals(client.getUid())) {
client.setIsSelected(true);
break;
}
}
谢谢你的帮助 如何使用Java 8流对此进行编码:
SuperUser superUser = db.getSuperUser;
for (final Client client : superUser) {
if (cartData.getClient().equals(client.getUid())) {
client.setIsSelected(true);
break;
}
}
对于每个人来说,似乎都不是这项工作的合适工具。
你可以试试:
superUser.stream()
.filter(c -> cartData.getClient().equals(c.getUid()))
.findFirst().ifPresent(c -> c.setIsSelected(true));
除了另一个答案之外,我还想补充一点,每次在循环中调用
cartData.getClient()
都是次优的,而不是在循环开始之前缓存它,如下所示:
T tempClient = cartData.getClient(); // where T is the type returned by getClient()
然后你可以做:
superUser.stream() // or Arrays.steam(superUser) if superUser is an array
.filter(c -> tempClient.equals(c.getUid()))
.findFirst()
.ifPresent(client -> client.setIsSelected(true));
或:
@Rann Lifshitz感谢您的编辑,但将其从“替换缓存…”更改为“替换缓存…”与我的意图相矛盾。当前,通过编辑,OP似乎已经在缓存对
cartData.getClient()的引用代码>在循环之前,情况并非如此。将还原该特定部分,并保留后续更改:)当然可以,伙计,抱歉出错。回答得好!
superUser.stream() // or Arrays.steam(superUser) if superUser is an array
.filter(c -> tempClient.equals(c.getUid()))
.limit(1)
.forEach(client -> client.setIsSelected(true));