java 8 流 if/else 重写
java 8 stream if/else rewrite
你能告诉我如何在这个方法中实现漂亮的逻辑吗?
protected Map<QueueType, QueueContext> getQueueContexts() {
List<QueueContext> queueContexts = QueueContext.parseConfigs(Config.KAFKA_QUEUES.get());
return queueContexts.stream()
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
}
需要检查List queueContexts中是否有QueueType.unknown,如果有,则写入日志,如果没有,则添加到Map。
我就是这么检查的,结果发现我收集的Map是正确的,但是所有的日志都是写的,我只需要写那些未知的
return queueContexts.stream().filter(type -> type.getQueueType() != QueueType.unknown)
.peek(ls -> LOGGER.info(ls))
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
怎么样
return queueContexts.stream()
.filter(type -> {
if (type.getQueueType() != QueueType.unknown)
return true;
LOGGER.info(type);
return false;
})
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
或者你可以创建一个方法来替换过滤器的核心:
private boolean isNotUnknown(QueueContext type){
if (type.getQueueType() != QueueType.unknown)
return true;
LOGGER.info(type);
return false;
}
然后:
return queueContexts.stream()
.filter(this::isNotUnknown)
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
你能告诉我如何在这个方法中实现漂亮的逻辑吗?
protected Map<QueueType, QueueContext> getQueueContexts() {
List<QueueContext> queueContexts = QueueContext.parseConfigs(Config.KAFKA_QUEUES.get());
return queueContexts.stream()
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
}
需要检查List queueContexts中是否有QueueType.unknown,如果有,则写入日志,如果没有,则添加到Map。
我就是这么检查的,结果发现我收集的Map是正确的,但是所有的日志都是写的,我只需要写那些未知的
return queueContexts.stream().filter(type -> type.getQueueType() != QueueType.unknown)
.peek(ls -> LOGGER.info(ls))
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
怎么样
return queueContexts.stream()
.filter(type -> {
if (type.getQueueType() != QueueType.unknown)
return true;
LOGGER.info(type);
return false;
})
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));
或者你可以创建一个方法来替换过滤器的核心:
private boolean isNotUnknown(QueueContext type){
if (type.getQueueType() != QueueType.unknown)
return true;
LOGGER.info(type);
return false;
}
然后:
return queueContexts.stream()
.filter(this::isNotUnknown)
.collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));