使用 Stream.ofNullable() 和 Stream() 有什么区别?

问题描述 投票:0回答:1

Java 11
中使用 Streams 时,我注意到以下情况。我尝试在非空列表上以两种不同的方式使用 Stream API。

第一种方式:

Collection<Object> categoryIds = List.of(1L, 2L, 3L, 4L);

List<String> nullable = Stream.ofNullable(categoryIds)
        .map(Object::toString)
        .collect(Collectors.toList());

第二种方式:

Collection<Object> categoryIds = List.of(1L, 2L, 3L, 4L);

List<String> nullable = categoryIds.stream()
        .map(Object::toString)
        .collect(Collectors.toList());

我尝试的两种方法导致了两种不同的结果。第一种方式的结果列表是包含单个元素的字符串。该字符串是:

"[1, 2, 3, 4]"
第二种方式给出了期望的和预期的结果。返回包含 4 个元素的结果列表:
"1", "2", "3", "4"

这种行为是预期的吗?还是有问题?

java java-stream
1个回答
0
投票

Stream.ofNullable您正在创建一个具有单个元素的

Stream
对象

返回包含单个元素的顺序 Stream,如果非 null,则返回空 Stream。

Collection.stream - 它按顺序创建带有集合元素的流对象

返回以此集合作为源的顺序 Stream。

并且

Collection.stream
相当于stream.of(T...values)方法

© www.soinside.com 2019 - 2024. All rights reserved.