gpt4 book ai didi

Java流如何将具有数量的对象解压缩到单个对象列表

转载 作者:行者123 更新时间:2023-12-01 11:33:26 25 4
gpt4 key购买 nike

我有一个“项目”对象列表,如:

public class Item {
private String name;
private int qty;

public Item() { }

public Item(String name, int qty) {
this.name = name;
this.qty = qty;
}

public List<Item> unpack() {
List<Item> items = new ArrayList<>();
items.add(new Item("foo", 2));
items.add(new Item("bar", 3));
items.add(new Item("baz", 1));

List<Item> unpackedItems = unpack(items);
System.out.println(unpackedItems.size()); // it should be == 6
return unpackedItems;
}

private List<Item> unpack(List<Item> items) {
// ..
}
}
有没有办法使用流“解包”这些对象,以便在数量大于 1 时最终重复项目列表,因此最后我将拥有数量等于 1 的对象?

最佳答案

您可以基于 qty 展平嵌套流(这基本上创建了一个 qty 大小的 int 流,然后映射到一个新的 Item,每个元素带有 qty = 1,重用名称):

private List<Item> unpack(List<Item> items) {
return items.stream()
.flatMap(item -> IntStream.range(0, item.qty)
.mapToObj(i -> new Item(item.name, 1)))
.collect(Collectors.toList());
}

关于Java流如何将具有数量的对象解压缩到单个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62549992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com