Java8流:每个流

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

您能帮助我使用Java8流API编写以下代码吗

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));