仅返回Java流中的真实谓词



我有以下方法:

public boolean isMsgOk(String msg) {...}

我想在这里调用此方法:

public String[] returnOkMessages(String... msgs) {
    return Arrays
        .asList(messagessgs)
        .stream(message->isMsgOk(message))
        .anyMatch() ???;
}

我想返回 String s的 List isMsgOk方法返回 true
我该如何收集它们?

使用filter,然后使用collectList

return Arrays.asList(messagessgs)
             .stream()
             .filter(message->isMsgOk(message))
             .collect(Collectors.toList())

或:

return Arrays.stream(messagessgs)
             .filter(this::isMsgOk)
             .collect(Collectors.toList())

编辑:

如果输出应该是数组,请使用:

return Arrays.stream(messagessgs)
             .filter(this::isMsgOk)
             .toArray(String[]::new)

将它们收集到List(您也可以使用方法参考而不是lambda(

 .filter(this::isMsgOk)
 .toArray(String[]::new);

最新更新