使用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
}
));
感谢任何帮助/指针。