如何使用Java Stream从Employee实体列表中提取所有k1字段的值
你代码的问题是误用了filter方法:filter的作用是筛选符合判断条件的元素,不会对流内的元素类型做转换,自然没法直接提取字段值。要提取所有Employee对象的k1字段,需要用map方法做元素映射,正确写法如下:
List<Employee> employeeList = findAll(); List<Double> k1List = employeeList.stream() // 将每个Employee对象映射为其k1字段值,也可以写成lambda形式:employee -> employee.getK1() .map(Employee::getK1) .collect(Collectors.toList());
如果需要额外过滤掉k1为null的无效值,可以加一层过滤逻辑:
import java.util.Objects; List<Double> k1List = employeeList.stream() .map(Employee::getK1) .filter(Objects::nonNull) .collect(Collectors.toList());
内容的提问来源于stack exchange,提问作者daniel sinaga
相关产品推荐
相关产品推荐

