如何在列表中收集列表
How to collect a list within a list
我有 class 个包含项目数组的商店。
public class Store extends NamedEntity{
String webAddress;
Item[] items;
public Store(String name, String webAddress, Set<Item> items) {
super(name);
this.webAddress = webAddress;
this.items = items.toArray(new Item[0]);
}
每件商品(class 件商品)的体积不同,我正在向商店添加商品。假设我有 20 件商品,我将 10 件商品添加到 2 或 3 家不同的商店,我必须根据它们的数量对商店中的这些商品进行分类。
我会这样排序:
List<Item> storedItemsSorted = storedItems.stream()
.sorted(Comparator.comparing(Item::getVolume))
.collect(Collectors.toList());
我不知道如何将项目放入此列表 storedItemsSorted。
我尝试过类似的方法,但它不起作用:
List <Item> storedItems = storeList
.stream()
.map(s->s.getItems())
.collect(Collectors.toList());
它说:
Required type: List <Item>
Provided:List <Item[]>
也许您正在寻找 flatMap
而不是 map
。 flatMap
适用于列表流,并映射到项目流。
List <Item> storedItems = storeList
.stream()
.flatMap(s->Arrays.stream(s.getItems()))
.collect(Collectors.toList());
我有 class 个包含项目数组的商店。
public class Store extends NamedEntity{
String webAddress;
Item[] items;
public Store(String name, String webAddress, Set<Item> items) {
super(name);
this.webAddress = webAddress;
this.items = items.toArray(new Item[0]);
}
每件商品(class 件商品)的体积不同,我正在向商店添加商品。假设我有 20 件商品,我将 10 件商品添加到 2 或 3 家不同的商店,我必须根据它们的数量对商店中的这些商品进行分类。
我会这样排序:
List<Item> storedItemsSorted = storedItems.stream()
.sorted(Comparator.comparing(Item::getVolume))
.collect(Collectors.toList());
我不知道如何将项目放入此列表 storedItemsSorted。
我尝试过类似的方法,但它不起作用:
List <Item> storedItems = storeList
.stream()
.map(s->s.getItems())
.collect(Collectors.toList());
它说:
Required type: List <Item>
Provided:List <Item[]>
也许您正在寻找 flatMap
而不是 map
。 flatMap
适用于列表流,并映射到项目流。
List <Item> storedItems = storeList
.stream()
.flatMap(s->Arrays.stream(s.getItems()))
.collect(Collectors.toList());