San*_*isy 1 java java-8 java-stream
我有以下代码
item.getSubCategory().stream().map(category -> {
return subCategoriesList.add(new SubCategoryViewModel(
category.get(String.format("_%s",categoryProperties[0])).toString(),
category.get(categoryProperties[2]).toString(),
category.get(categoryProperties[3]).toString()));
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这item.getSubCategory()是一个类别模型列表。现在,如果 null 出现在getSubCategory我们会得到一个空指针异常并且不能对其应用蒸汽。在将流应用于列表之前,是否有更好的方法来处理对列表的空检查。
我不想使用IF语句来检查getSubCategory. java steam API 有没有更好的方法?
返回列表的方法永远不应该返回null- 这是一种非常糟糕的做法。只需在构造函数中初始化列表,如果没有添加任何对象,则返回一个空列表。通过这种方式,您可以消除在您想使用getSubCategory.
可以说你最终得到了一个占用内存的未使用对象。然而,除非你真的有很多item对象,否则拥有一些“备用”列表不会伤害任何人。请记住,在大多数情况下,代码可读性是第一位的 - 当您看到实际问题时修复性能。
编辑:正如 Holger 所建议的,如果您担心这些空列表的内存成本,您可以使用Collections.emptyList(). 在您的内部,您item将所有内容保持原样,仅在需要时创建列表等。但是,在getSubCategory而不是返回内部,null您应该检查列表是否已初始化,如果未初始化,则返回Collections.emptyList()代替空值。根据文档,Collections.emptyList()返回一个列表的不可变实例,多次调用将返回同一个实例——永远只会创建一个。
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |