![]() |
1
79
我同意
Stuart Marks
那个
编辑:
Java 9添加了静态工厂方法
这并没有像Stuart Marks所讨论的那样滥用Optional API,而且与三元运算符解决方案不同,没有出现空指针异常的机会(例如,如果你不注意并打乱了操作数的顺序)。它还可以使用上限通配符,而不需要
|
![]() |
2
27
我能想到的最好的办法就是使用
已更新
使用@Misha的建议
|
![]() |
3
18
在其他答案中
让我提出以下更平凡的技巧:
我想三元运算符现在有些过时了,但我认为这是最简单、最有效的解决方案。
如果我是为real(也就是说,为一个真正的库,而不仅仅是Stack Overflow上的示例代码)编写的,我会添加通配符,以便流返回类型可以与List类型不同。哦,它可以是一个集合,因为这是
(警告抑制是必要的,因为
|
![]() |
4
12
apache通用集合4:
|
![]() |
5
8
Java 8:
Java 9:
Apache Commons集合4:
|
|
6
0
就我个人而言,我认为null是不可取的,并且尽可能使用Optional,尽管性能开销很小。因此,我使用Stuart Marks的接口和基于gdejohn的实现,即。
|
![]() |
7
0
Java 16
这里有一个生成流的选项
可为空的源
使用Java 16
此操作需要类型为的参数
其中
方法参考
以及
笔记
那个
笔记1. 列表( 以及其他集合和阵列 )是数据的容器,即当你需要一个你感兴趣的列表中的东西时,实际值存储在里面。一个可为空的数据容器迫使您采取与业务逻辑无关的正确防御措施,您或同事可能会忘记这一点(这会产生一个随时可能出现的问题)。
无论可为null的集合的来源如何,如果您有可能更改正在使用的代码,则可以消除实际问题,而不是使用
以下是可为空集合的可能来源及其处理方法:
2.
如果您需要一种快速的方法使代码工作,但您希望知道传入的列表
3.
最后,作为
@斯图尔特·马克斯
已在中指出
his answer to this question
|
![]() |
John Smith · Java按值对映射进行分组,其中值为列表 2 年前 |
![]() |
AliCa · 如何将csv文件映射到列表 3 年前 |
![]() |
AAryz · 为什么Java 8流只能从API级别24获得? 7 年前 |
![]() |
Alex Bloomberg · 使用Java流生成json对象 7 年前 |
![]() |
Juan M · Java 8映射未按值正确排序[重复] 7 年前 |
![]() |
Eric Lilja · 从嵌套流中收集一组对象 7 年前 |