如何在Java8中使用reduce从对象列表创建字符串列表?
我的目标如下:如何在Java8中使用reduce从对象列表创建字符串列表?,java,Java,我的目标如下: 类顺序{ 私有字符串码; 私有字符串状态; //构造函数、getter和setter等 } 我需要从满足条件的订单列表中创建一个代码列表。 我在JavaScript中实现了类似的功能,如下所示: const code=orders.reduce((代码列表,顺序)=>{ if(order.status==“NEW”)返回codeList.push(order.code) 返回代码表 }, []) 使用Java 8是否可以实现这一点?在Java中,您应该使用收集,而不是减少,用
类顺序{
私有字符串码;
私有字符串状态;
//构造函数、getter和setter等
}
我需要从满足条件的订单列表中创建一个代码列表。
我在JavaScript中实现了类似的功能,如下所示:
const code=orders.reduce((代码列表,顺序)=>{
if(order.status==“NEW”)返回codeList.push(order.code)
返回代码表
}, [])
使用Java 8是否可以实现这一点?在Java中,您应该使用
收集
,而不是减少
,用于此目的:
List<String> codes =
orders.stream()
.filter(o -> o.getStatus().equals("NEW"))
.map(Order::getCode)
.collect(Collectors.toList());
列出代码=
orders.stream()
.filter(o->o.getStatus().equals(“新”))
.map(订单::getCode)
.collect(Collectors.toList());
Reduce用于单个结果中的聚合值(例如,平均值或总和)。
Collect用于集合中的聚合值
Java8流通常比在集合上处理更高效,因为它们只处理您需要的内容,还允许您在必要时进行并行化
再见我这么做了,但这样做有效吗?我的意思是,就我而言,对于这个实现,我将对数组进行两次检查,但是对于JS实现,只进行了一次。是的,它是有效的。不,这并不是“重复”列表两次。这是一条小溪。输入列表迭代一次。