因此,我基本上是在尝试找出是否有办法避免两次重复相同的代码,并在出现语法错误的地方获取密钥。
List<String> listOfKeys = new ArrayList<>(
Arrays.asList("key1", "key2", "key3", "key4", "key5"));
String path = "something.something.";
listOfKeys.stream()
.map(key -> path + key)
.map(getConfig()::getString)
.forEach(value -> {
if (value == null || value.isEmpty())
getLogger().info(key + " is empty");
});
List<String> listOfValue = listOfKeys.stream()
.map(key -> path + key)
.map(getConfig()::getString)
.collect(Collectors.toList());
我知道log方法中的键是语法错误,但是我想知道如何才能在该点访问该键并使用具有空值的键发送消息?listOfValues在第二个流中创建时是否还可以完成所有操作?
问题来源:Stack Overflow
您可以使用peek。它评估代码块并继续流式处理:
List<String> listOfValue = listOfKeys.stream()
.map(key -> path + key)
.map(getConfig()::getString)
.peek(value -> {
if (value == null || value.isEmpty())
getLogger().info(key + " is empty");
})
.collect(Collectors.toList());
如果要在记录中使用密钥,则可以使用Map.Entry:
List<String> listOfValue = listOfKeys.stream()
.map(key -> new AbstractMap.SimpleEntry(key, getConfig().getString(path + key))
.peek(entry -> {
if (entry.getValue() == null || entry.getValue().isEmpty())
getLogger().info(entry.getKey() + " is empty");
})
.map(AbstractMap.SimpleEntry::getValue)
.collect(Collectors.toList());
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。