使用 java 流的等效代码用于常规 for 循环
Equivalent code using java streams for conventional for loop
我需要使用 Java 流转换此 for
循环代码:
boolean present = false;
for (Long studentKey : studentKeys) {
if (!studentKey.equals(student.getId())) {
present= true;
log.debug(STR_SESSION_BLOCKED_ANOTHER_USER);
}
}
您可以按照以下说明进行操作:
创建包含 if
条件的流实例:studentKeys.stream().filter(key -> !key.equals(student.getId()))
将您的流嵌套在供应商实例中 (class java.util.function.Supplier
)。实际上,每个流实例只能处理一次,供应商允许我们在每次需要时重新创建一个新实例。
对您的流进行必要的操作(present
和 log.debug
)。
下面的代码是这样的:
Supplier<Stream<Long>> studentFilter = () ->
studentKeys.stream().filter(key -> !key.equals(student.getId()));
boolean present = (studentFilter.get().count() != 0L);
studentFilter.get().forEach(key -> log.debug(STR_SESSION_BLOCKED_ANOTHER_USER));
上面的等效代码returns我是正确的布尔标志
boolean present = studentKeys.stream() .anyMatch(key ->
!key.equals(student.getId()));
if(present) log.debug(STR_SESSION_BLOCKED_ANOTHER_USER);
我需要使用 Java 流转换此 for
循环代码:
boolean present = false;
for (Long studentKey : studentKeys) {
if (!studentKey.equals(student.getId())) {
present= true;
log.debug(STR_SESSION_BLOCKED_ANOTHER_USER);
}
}
您可以按照以下说明进行操作:
创建包含
if
条件的流实例:studentKeys.stream().filter(key -> !key.equals(student.getId()))
将您的流嵌套在供应商实例中 (class
java.util.function.Supplier
)。实际上,每个流实例只能处理一次,供应商允许我们在每次需要时重新创建一个新实例。对您的流进行必要的操作(
present
和log.debug
)。
下面的代码是这样的:
Supplier<Stream<Long>> studentFilter = () ->
studentKeys.stream().filter(key -> !key.equals(student.getId()));
boolean present = (studentFilter.get().count() != 0L);
studentFilter.get().forEach(key -> log.debug(STR_SESSION_BLOCKED_ANOTHER_USER));
上面的等效代码returns我是正确的布尔标志
boolean present = studentKeys.stream() .anyMatch(key ->
!key.equals(student.getId()));
if(present) log.debug(STR_SESSION_BLOCKED_ANOTHER_USER);