java 以简单的方式从ID列表创建对象

bsxbgnwa  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(102)

有没有一种方法可以用流之类的东西来简化下面的内容?

final List<Fruit> fruits = new ArrayList<>(fruitIds.size());
for (final long id : fruitIds) {
   final var fruit = new Fruit();
   fruit.setId(id);

   fruits.add(fruit);
}

先谢谢你了

vm0i2vca

vm0i2vca1#

使用构造函数是最佳的。这里假设一个int id。

class Fruit {
    int id;
   
    public Fruit(int id) {
        this.id = id;
    }
    public void setId(int id) {
        this.id = id;
    }
}

for (Fruit id : fruitIds) {
    Fruits.add(new Fruit(id));
}

但是如果你不允许修改你的Fruit class,那么创建另一个类来充当工厂类就可以了。我再次假设idint

List<Fruit> fruits = new ArrayList<>(fruitIds.size());

for (final var id : fruitIds) {
    fruits.add(FruitFactory.instance(id));
}

class FruitFactory {
    public static Fruit instance(int id) {
        Fruit fruit = new Fruit();
        fruit.setId(id);
        return fruit;
    }
}

如果你只在代码的一个地方创建Fruit的示例,那么上面的代码就没有什么用处了,在这种情况下,我只会使用你现有的代码。
使用上述公式,流解为

List<Fruit> fruits = 
     fruitIds.stream().map(FruitFactory::instance).toList();

使用构造函数

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

相关问题