Java 11中Stream.ofNullable()与stream()的区别及行为疑问
该行为完全符合预期
Stream.ofNullable的设计逻辑:这个方法是用来处理「可能为null的单个对象」的。当传入非null对象时,它会生成一个仅包含该对象的单元素流。
你第一种写法里,Stream.ofNullable(categoryIds)传入的是整个List对象,所以流里只有这一个List元素。后续map(Object::toString)是把整个List转成它的默认字符串形式(也就是[1, 2, 3, 4]),最终自然收集出只有一个元素的列表。集合的stream()方法逻辑:
categoryIds.stream()是直接获取集合内部元素的流,这个流包含集合里的每一个独立元素(也就是1L、2L、3L、4L这四个Long对象)。后续map操作是把每个Long元素转成对应的字符串,最终收集出四个元素的列表,这是集合流的常规用法。
两种写法的差异完全是因为调用了不同的Stream创建API,它们的设计逻辑本来就不同,所以结果不同是完全符合预期的。
内容的提问来源于stack exchange,提问作者fatih
相关产品推荐
相关产品推荐

