如何创建Map<String,List<Product>>
个以下.这里,String
(Map
中的key)是Product
中的category
.
一个product可以属于multiple个类别,如下例所示.
我正在try 使用以下代码,但无法获得下一操作:
products.stream()
.flatMap(product -> product.getCategories().stream())
. // how should I progress from here?
结果应如下所示:
{Electron =[p1,p3,p4],时尚=[p1,p2,p4],厨房=[p1,p2,p3], Abc1=[p2],xyz1=[p3],pqr1=[p4]}
Product p1 = new Product(123, Arrays.asList("electonics,fashion,kitchen".split(",")));
Product p2 = new Product(123, Arrays.asList("abc1,fashion,kitchen".split(",")));
Product p3 = new Product(123, Arrays.asList("electonics,xyz1,kitchen".split(",")));
Product p4 = new Product(123, Arrays.asList("electonics,fashion,pqr1".split(",")));
List<Product> products = Arrays.asList(p1, p2, p3, p4);
class Product {
int price;
List<String> categories;
public Product(int price) {
this.price = price;
}
public Product(int price, List<String> categories) {
this.price = price;
this.categories = categories;
}
public int getPrice() {
return price;
}
public List<String> getCategories() {
return categories;
}
}