首页 > 解决方案 > 使用流进行从数组到列表的空安全转换

问题描述

我正在寻找一种简洁的方法来重写一段 Java 代码,以便它使用流以空安全的方式将数组转换为列表。这是原始代码:

public MailObject toMailObject(final String[] ccAddresses) {
    final MailObject mailObject = new MailObject();

    // line of code to be altered
    mailObject.setCcAddresses(ccAddresses == null 
        ? Collections.emptyList() : Arrays.asList(ccAddresses));

    // other necessary code

    return mailObject;
}

我想过做这样的事情:

// psuedocode that obviously doesn't compile
Optional.ofNullable(ccAddresses).SOMETHING.orElse(Collections.emptyList());

有些东西会是这样的:

Arrays.stream(ints).collect(Collectors.toList());

但我似乎无法完全正确地理解语法。

这个问题很有帮助,但并没有完全解决我的问题。谁能指出我正确的方向?我觉得我很近...

非常感谢您的宝贵时间。

标签: javajava-stream

解决方案


您可以使用map

List<String> ccAddrs = Optional.ofNullable(ccAddress)
                               .map(Arrays::asList)
                               .orElse(Collections.emptyList())

推荐阅读