以下代码正在为空的属性抛出NPE。class Person有属性:string:name,Integer:age,Integer:salarysalary
此处可以为空。我想创建一个工资列表。
个人。流()。mapToDouble(Person::getSalary)。装箱()。collect(Collectors.toList())
在这里,我必须在结果列表中保留空值。null不能替换为0。
如果我理解正确的话,您想要将每个属性值转换为Double
,如果它是非null
,或者将其保留为null
,如果它是null
。所以就这么说吧:
Integer prop = value.getProperty();
return (prop != null) ? prop.doubleValue() : null;
您可以将其表示为lambda,并将其传递给map()
。(留给读者作为练习。)
我认为您可以使用map
而不是mapToDouble
以及三元运算符:
List<Double> salaries = persons.stream()
.map(Person::getSalary)
.map(s -> s == null ? null : s.doubleValue())
.collect(Collectors.toList())
在Java8的Streams中,我知道如何基于谓词过滤集合,并处理谓词为true的项。我想知道的是,如果谓词仅将集合划分为两个组,那么是否可以通过API基于谓词进行过滤,处理过滤结果,然后立即连接调用以处理过滤器排除的所有元素? 例如,考虑以下列表: 是否有可能做到: 或者我只需对过滤的项目执行过程,然后调用原始列表上的和,然后处理剩余的项目? 谢谢
例如,如果我有如下代码: 我想弄清楚如何删除条件块,并在一个流中这样做。 如果我只是在筛选结果上调用“.map”,如果它找到了匹配的条目,这就可以工作。如果不是,我会得到一个NoSuchelementException。 您能想出一种方法在流中包含第一个条件而不使其变得更加复杂吗?
我有一个特定的要求,其中,我需要检查空的数据文件。如果为空,则填充默认值。这是我尝试过但没有得到我想要的东西。 这个想法是,如果df不是空的,就得到它。如果为空,则填写默认值为零。这似乎不起作用。以下是我得到的。 请帮忙。
让我们考虑一个类,它只包含一个属性。我创建了6个父类对象,属性值为。 在这两种情况下,我都得到一个。 这个怎么处理?
问题内容: 我想处理对象中的列表。我必须确保处理所有元素,以便收到它们。 因此l,我应该使用它吗? 还是只要不使用并行性就足以使用流? 问题答案: 你在问错问题。你正在询问而要按顺序处理项目,因此你必须询问订购。如果你有顺序的流并执行保证维持顺序的操作,则该流是并行处理还是顺序处理都没有关系;实施将维持秩序。 有序属性不同于并行与顺序。例如,如果你调用一个同时调用流将是无序在List返回的有序流。
我想在Java对象中处理列表。我必须确保处理所有的元素,以便我收到他们。 因此,我是否应该对我使用的每个调用? 或者,只要不使用并行性,只使用流就足够了吗?