You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Stream简化从ID列表创建Fruit对象的Java代码?

简化代码的几种方式

当然可以用Stream API来简化这段代码,以下是几种可行的方案:

基础Stream写法

直接用stream().map()转换元素,再收集为列表:

List<Fruit> fruits = fruitIds.stream()
    .map(id -> {
        Fruit fruit = new Fruit();
        fruit.setId(id);
        return fruit;
    })
    .collect(Collectors.toList());

优化构造器后的极简写法

如果能修改Fruit类,给它添加一个接收id的构造器:

public class Fruit {
    private long id;

    public Fruit(long id) {
        this.id = id;
    }

    // 保留原有的setter和getter
    public void setId(long id) { this.id = id; }
    public long getId() { return id; }
}

这样就能用方法引用进一步简化Stream代码:

List<Fruit> fruits = fruitIds.stream()
    .map(Fruit::new)
    .collect(Collectors.toList());

保持初始容量的优化写法

如果想和原代码一样指定列表初始容量(避免扩容带来的性能损耗),可以用Collectors.toCollection():

List<Fruit> fruits = fruitIds.stream()
    .map(Fruit::new)
    .collect(Collectors.toCollection(() -> new ArrayList<>(fruitIds.size())));

内容的提问来源于stack exchange,提问作者MikelAlejoBR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:31:13