java8:将逻辑转换为流

时间:2019-07-14 23:25:55

标签: java lambda java-8 stream java-stream

使用java8 stream / lambda编写逻辑

给出-

处理程序列表-列表 每个处理程序都与键列表关联。 例如: handler1-[key1,key2] handler2-[key3,key4]

预期输出:

key1 - Handler1
key2 - Handler1
key3 - Handler2
key4 - Handler2

使用2个for循环,我当前的逻辑非常简单。我希望它以java8 lambda格式编写。

下面是我使用循环的幼稚逻辑。


            for (Handler handler : handlers) {
                String keynames[] = getKeyNames(handler);
                for (String key: keyNames) {
                    if (keyMap.get(key) != null) {
                        throw new RunTimeException(
                            String.format("Handler Mapping already exists for key %s = %s", topicName,
                                keyMap.get(key)));
                    }

                    keyMap.put(key, handler);
                }
            }

我试图使用下面的代码转换逻辑,但无法弄清楚。

        this.keyMap = ImmutableMap.copyOf(
                Maps.uniqueIndex(
                    handlers.orElse(Collections.emptyList()),
                    handler -> {
                       String keynames[] = getKeyNames(handler);
                       // I'm not getting, how to map individual key to handler name
                    }
                ));

感谢任何帮助/指针。

0 个答案:

没有答案