簡體   English   中英

以簡單的方式從 ID 列表創建對象

[英]Create objects from a list of IDs in a simple way

有沒有辦法用 stream 或其他東西簡化以下內容?

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

   fruits.add(fruit);
}

非常感謝你提前

使用構造函數是最佳的。 這假定一個 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創建另一個 class 作為工廠 class 會起作用。 我再次假設id是一個int


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 的實例,那么上面的內容將沒什么用處。 在那種情況下,我只會堅持你所擁有的。

使用以上內容,stream 解決方案將是

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

和一個構造函數

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM