在java中处理流时记录警告消息

eh57zj3b  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(324)

如果Map rdsDesksByName.get(e.getKey()) 没有键的任何值。如何在流中处理此问题?
现在我回来了 createDeskWithScope(rdsDesksByName.get(e.getKey()),ds.outOfScope()) ,但是如果 rdsDesksByName 没有键的任何值,否则应照常处理

List<Desk> desks = deskScopesByName.entrySet()
    .stream()
    .flatMap(e -> {
        return deskScopesByName.get(e.getKey())
            .stream()
            .map(ds -> {
                return createDeskWithScope(rdsDesksByName.get(e.getKey()), ds.outOfScope());
            });                     
    })
   .collect(Collectors.toList());
lzfw57am

lzfw57am1#

在flatmapping操作中,通过键查找对象并使用 if-else 条件:
如果对象是 null (该键没有值),记录消息并返回 Stream.empty() .
否则,请使用继续处理 createDeskWithScope 方法。
下面是代码的外观(未经测试,但应该会给您一个想法):

List<Desk> desks = deskScopesByName.entrySet()
    .stream()
    .flatMap(entry -> {
        String key = entry.getKey();
        Desk rdsDesk = rdsDesksByName.get(key);
        if (rdsDesk == null) {
            log.warn("There is no Desk present for {}", key);
            return Stream.empty();
        } else {
            return entry.getValue()
                .stream()
                .map(ds -> createDeskWithScope(rdsDesk, ds.outOfScope()));
        }
    })
    .collect(Collectors.toList());

我建议将flatmapping操作 Package 在一个方法中。

相关问题