java - 使用流进行从数组到列表的空安全转换

标签 java java-stream

我正在寻找一种简洁的方法来重写一段 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());

其中 SOMETHING 应该是:

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

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

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

非常感谢您的宝贵时间。

最佳答案

您可能会使用 map :

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

关于java - 使用流进行从数组到列表的空安全转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272522/

相关文章:

java - 在 EntityManager 删除同步期间找到的对象之后

java - LinkedList 的复杂流逻辑

java - 获取 Java 8 流的最小值和最大值的简洁方法

java - 有条件地从流中删除第一个(索引为零)元素

java - 检查对象是否为空的最快方法

java - 避免多次检查 != null

java - 如何拒绝使用 JFileChooser 选择相同的文件

java - 在 Java 中对 FileUtils listFiles 施加两个条件

Java Streams TakeUntil 过滤/收集 100 个元素

lambda - 如何将整数流转换为java.awt.Point?