【问题标题】:java 8 stream if/else rewritejava 8流if/else重写
【发布时间】:2021-09-08 05:22:01
【问题描述】:

你能告诉我如何在这个方法中实现漂亮的逻辑吗?

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中。

我只是做了这样的检查,但事实证明我正在正确收集地图,但是所有的日志都写了,我只需要写那些未知的

return queueContexts.stream().filter(type -> type.getQueueType() != QueueType.unknown)
                    .peek(ls -> LOGGER.info(ls))
                    .collect(Collectors.toMap(QueueContext::getQueueType, Function.identity()));

【问题讨论】:

    标签: java java-8 java-stream


    【解决方案1】:

    怎么样

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      相关资源
      最近更新 更多